我在Mac OS X 10.9.4 上
我可以从命令行成功运行此命令以生成图像或google.com
wkhtmltoimage http://www.google.com /Users/me/Sites/google.jpg
但是当我尝试使用php命令从我的网站内部执行相同的命令时
$cmd='wkhtmltoimage http://www.google.com /Users/me/Sites/google.jpg';
shell_exec($cmd);
我得到以下错误:
sh: wkhtmltoimage: command not found
这是权限问题吗?如果是,我该如何让它发挥作用?
===
更新
我像@Mureinik建议的那样设置了完整的路径,现在我得到了一些进展,错误消息是
Loading page (1/2)
[> ] 0%
[======> ] 10%
[=============> ] 23%
[==================> ] 31%
[===================> ] 33%
[========================> ] 41%
[=====================================> ] 62%
[=======================================> ] 65%
[========================================> ] 67%
[=========================================> ] 69%
[==========================================> ] 71%
[==============================================> ] 78%
[==================================================> ] 84%
[===================================================> ] 86%
[============================================================] 100%
Rendering (2/2)
[> ] 0%
[===============> ] 25%
Error: Could not write to output file
Error: Could not save image
[============================================================] 100%
Done
Exit with code 1, due to unknown error.
我现在有权限问题吗?
===
更新
我将文件权限更改为我的目的地,这就处理好了。
问题可能是shell_exec
使用了与您不同的$PATH
,因此无法找到wkhtmltoimage
。在您自己的shell中,您可以使用which wkhtmltoimage
来确定它的确切安装位置,然后使用带有完整路径的shell_exec
,例如:
$cmd='/opt/wkhtmltoimage http://www.google.com /Users/me/Sites/google.jpg';
shell_exec($cmd);
对于其他偶然发现这个答案的人,我的命令涉及将图像保存到一个目录中,而shell_exec
没有该目录的写入权限。作为的用户,我拥有权限,这就是为什么我能够成功手动执行查询的原因。
所以我只是更改了目录的权限,以便可以将其写入.