为什么这个shell命令没有给出所需的结果?

时间:2011-08-03 12:56:50

标签: php shell-exec

我在我的服务器上使用 wkhtmtoimage 库,当我在PuTTY中运行时,我已设法获取以下命令的输出:

wkhtmltoimage www.google.com test.jpg

但是,当我使用以下shell命令时,我没有得到输出,我不知道为什么。

$filnename = "test.jpg";
$url = "http://www.google.com";    
shell_exec("wkhtmltoimage $url $filename");

即使我尝试使用此变体,但仍未获得所需的结果:

shell_exec("/usr/local/bin/wkhtmltoimage $url $filename");

我做错了什么?

修改

我下载了Linux二进制文件并将其放入文件夹然后运行它。我是否需要重新启动服务器,这些更改会受到影响?

允许使用shell_exec命令,因为我们将它用于ffmpeg(已经安装了一个)

2 个答案:

答案 0 :(得分:0)

我不能给出确切的解决方案,但如果你能尝试我写的东西,我可能会有所帮助。如果我提供的解决方案不起作用,我会列出更多解决方案。

解决方案提案1:
在url和filename

周围使用引号
shell_exec("wkhtmltoimage \"$url\" \"$filename\"");

解决方案提案2:
尝试将流重定向到文件并键入内容。

shell_exec("wkhtmltoimage \"$url\" \"$filename\" > output.txt 2> error.txt");

答案 1 :(得分:0)

可能是运行PHP(或Apache)的用户无权运行此工具。尝试打印此命令的输出或只使用passthru()直接打印命令输出。 另一种解决方案是将输出传递给文件,如@Cem_Kalyoncu所写。