【问题标题】:Executing wkhtmltopdf from PHP fails从 PHP 执行 wkhtmltopdf 失败
【发布时间】:2012-05-17 07:31:38
【问题描述】:

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

问题:我无法从 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、shell_exec 等替换 exec 没有区别

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

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

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

【问题讨论】:

  • 问题已解决。这是通过 apt-get 安装 wkhtmltopdf 时发生的常见问题。我不得不删除它并直接从 code.google.com/p/wkhtmltopdf 下载。现在它可以工作了。

标签: php exec wkhtmltopdf


【解决方案1】:

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

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

这样它会在 Apache 下运行时告诉你错误。一旦你知道出了什么问题,就更容易解决。我有一个similar problem before with ImageMagick

【讨论】:

  • 伙计,你救了我的命!您的想法奏效了,并向我显示了一个错误“无法连接到 X 服务器”。然后很容易发现,通过apt-get安装wkhtmltopdf的时候是个通病。我不得不删除它并直接从code.google.com/p/wkhtmltopdf 下载。现在可以了 :) 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2015-03-19
  • 2015-04-05
  • 1970-01-01
  • 2014-01-04
相关资源
最近更新 更多