7

有一些与我类似的主题,但它们对我没有帮助。也许会有新的东西出现。

问题:我无法从 PHP 执行 wkhtmltopdf。我的基本代码是: exec('wkhtmltopdf http://somesite.com /home/user/file.pdf');

现在我已经检查了几件事:

  • 从控制台执行时,相同的命令有效
  • 安全模式被禁用 - 我可以在 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、shell_exec 等替换 exec 没有区别

结论:我可以执行wkhtmltopdf,我可以上网,我可以写具体的文件,但是正确的转换命令失败并返回状态1。

我用的是最新的Ubuntu,PHP版本是5.3.10-1ubuntu3,wkhtmltopdf版本是0.9.9。我也在其他具有相同结果的机器上进行了尝试。

任何(只是任何)想法将不胜感激!

4

1 回答 1

16

添加2>&1到命令的末尾以了解确切的错误。

exec('wkhtmltopdf http://somesite.com /home/user/file.pdf 2>&1');

这样它会在 Apache 下运行它时告诉你错误。一旦你知道出了什么问题,就更容易解决。我之前在使用 ImageMagick 时遇到过类似的问题

于 2012-05-20T03:57:19.767 回答