有一些类似于我的主题,但他们没有帮助我.也许会有新的东西出现.
问题:我无法从PHP执行wkhtmltopdf.
我的基本代码是:
exec(‘wkhtmltopdf http://somesite.com /home/user/file.pdf’);
现在我已经检查了一些事情:
>从控制台执行时,相同的命令有效
> safe_mode被禁用 – 我可以用PHP执行命令,例如exec(‘ls’);工作正常
>可以找到wkhtmltopdf的路径,我可以运行程序本身,例如exec(‘wkhtmltopdf -V’);工作正常并输出版本信息
>输出路径是可写的,它有777权限和exec(‘wkhtmltopdf -V> /home/user/file.pdf’);工作正常,创建文件并将版本信息放入其中
>从PHP执行具有Internet访问权限,例如exec(‘wget -O /home/user/file.pdf http://somesite.com’)工作正常,检索站点源并将其放入文件
>用passthru替换exec,shell_exec等没有区别
结论:
我可以执行wkhtmltopdf,我可以访问互联网,我可以编写特定文件,但正确的转换命令失败并返回状态1.
我使用最新的Ubuntu,PHP版本是5.3.10-1ubuntu3,wkhtmltopdf版本是0.9.9.
我也在其他机器上尝试了同样的结果.
任何(只是任何)的想法将不胜感激!
解决方法:
在命令末尾添加2>& 1以了解确切的错误.
exec(‘wkhtmltopdf http://somesite.com /home/user/file.pdf 2>& 1’);
这样它会在Apache下运行时告诉你错误.一旦你知道什么是错的,就更容易解决.我有一个similar problem before with ImageMagick