2014-11-02 141 views
1

失败,我在Mac OS X 10.9.4的Mac OSX CMD命令行工作,从PHP了shell_exec()

我可以在命令行中成功运行此命令生成的图像或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. 

我是否有权限问题现在?

====

更新

我改变了文件权限到我的目的地和照顾它。

+0

尝试在命令末尾添加2>&1以捕获错误消息 – 2014-11-02 06:47:08

+0

我做到了,那是我得到了上面的错误消息 – Gilberg 2014-11-02 15:14:47

回答

4

问题可能是shell_exec然后你使用不同的$PATH,因此无法找到wkhtmltoimage。 从你自己的壳,你可以使用which wkhtmltoimage,以确定它的安装的确切位置,然后用shell_exec的完整路径,如:

+1

恕我直言,最好追加到'PATH'(带'putenv()')而不是使用完整的路径名,因为它更健壮和便携。 – Carpetsmoker 2014-11-02 12:54:38

+0

@Carpetsmoker这取决于具体情况。 – 2014-11-02 12:55:48

0

对于其他人谁碰到这个答案绊倒,我命令涉及保存图像到shell_exec没有该目录的写入权限。我作为用户确实有权利,这就是为什么我能够成功手动执行查询。

所以我只是改变了目录的权限,以便它可以写入。