代码之家  ›  专栏  ›  技术社区  ›  LiamB

php exec没有运行,但是命令工作正常!

php
  •  0
  • LiamB  · 技术社区  · 14 年前

    我有下面的脚本来获取一个在PHP中上载的PDF,并调用imagemagik/ghostscript来转换为指定大小的图像。

    $tmp = exec("convert \"{$strPDF}\" -resize 500X500 \"{$strOut}\"", $results); 
    

    然而,这似乎不起作用。日志文件中没有错误,屏幕上没有错误。如果我这样做,

    $tmp = exec("convert \"{$strPDF}\" -resize 500X500 \"{$strOut}\"", $results); 
    echo ("convert \"{$strPDF}\" -resize 500X500 \"{$strOut}\"");
    

    我将输出粘贴到一个命令提示符中,它可以正常工作(大约需要6-10秒——我的最大执行时间是600秒)。

    有什么关于为什么这可能不起作用的建议吗?

    这是Windows、IIS 7和PHP5。

    编辑:我在CentOS和Windows上都有同样的问题。两者都安装了ImageMagik和Ghostscript。

    编辑编辑以下仍然失败。

    $handle = popen("convert \"{$strPDF}\" -resize 500X500 \"{$strOut}\"","r");
            echo "'$handle'; " . gettype($handle) . "\n";
            $read = fread($handle, 2096);
            echo $read;
            pclose($handle);
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   Haim Evgi    14 年前

    在php.ini中,此函数exec可能在

    disable_functions
    

    或者如果你跑进去

    安全模式

    当PHP运行时,此函数被禁用 safe mode .

        2
  •  5
  •   Community CDub    8 年前

    尝试在命令末尾添加2>&1。我找到了它 here .

    exec('some_command 2>&1', $output);
    print_r($output);  // to see the respond to your command
    
        3
  •  1
  •   Arc    14 年前

    你的路径变量有问题吗?

    你可能想试着跑

    <?php
    echo exec('cmd.exe /c echo %path%');
    ?>
    

    命令行和来自IIS的,并比较它们的输出。