【发布时间】:2010-09-06 14:35:16
【问题描述】:
我有以下脚本在 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 秒 - 我的 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);
【问题讨论】:
-
你把变量直接放在命令行是自找麻烦。 CLI 注入 与 SQL 注入 一样危险,甚至更危险。使用
escapeshellarg()。 -
@Andrew 评论指出,谢谢。
-
尝试使用 popen 代替 exec 并读取输出(使用 fgets)
-
@Milan Babuškov 同样的问题。 :( 用代码更新了主帖。
-
$strPDF 或 $strOut 是否包含空格?
标签: php