2010-09-06 79 views
0

我有以下脚本来获取PHP上传的PDF并调用ImageMagik/Ghostscript转换为指定大小的图像。PHP Exec未运行,但命令正常工作!

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

但是,这似乎并不奏效。日志文件中没有错误,屏幕上没有错误。如果我这样做,

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

我粘贴输出到命令提示它工作正常(大约需要6-10秒 - 我的max_execution_time为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); 
+1

通过将变量直接放在命令行中,您正在寻求麻烦。 ** CLI注入**如果不是比* SQL注入*更危险,则是危险的。使用['escapeshellarg()'](http://php.net/escapeshellarg)。 – 2010-09-06 14:47:16

+0

@Andrew评论指出,谢谢。 – LiamB 2010-09-06 15:22:31

+0

尝试使用popen而不是exec并读取输出(使用fgets) – 2010-09-06 15:24:51

回答

1
在php.ini

也许这个功能EXEC下

disable_functions 

声明,或者如果您在

安全模式下运行

,此功能禁用PHP是当运行在safe mode

+0

(safe_mode = Off和disable_functions =)所以看起来并不是这样的 – LiamB 2010-09-06 14:50:46

+0

可能对此文件或此目录的权限 – 2010-09-06 14:52:33

+0

似乎不是。 – LiamB 2010-09-06 15:18:42

1

它可能是你的PATH变量的问题?

你可能会想尝试,并在命令行,并从IIS中运行

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

两个,并比较它们的输出。

+0

如果在这种情况下尝试使用绝对路径可能会有所帮助(特别是,即使“cmd.exe”不执行)。 – Archimedix 2010-09-09 12:05:08

2

尝试将2> & 1添加到命令的末尾。我发现它here

exec('some_command 2>&1', $output); 
print_r($output); // to see the respond to your command 
相关问题