使用页眉和页脚从PHP执行wkhtmltopdf时的ProtocolUnknownError?

时间:2015-10-07 07:42:57

标签: php shell wkhtmltopdf

我从PHP执行的wkhtmltopdf有一个奇怪的问题。我的PHP代码如下所示:

<?php
  exec('wkhtmltopdf --header-html "http://example.com/pdf-header" 
     --footer_html "http://example.com/pdf-footer"
     /tmp/pdf.html /tmp/pdf.pdf');
?>

当我从shell执行相同的命令时,它完美地工作。但是,当我尝试像上面提到的那样从PHP运行它时,脚本会运行直到超时导致PDF文件为空。

当我搜索网页时,我尝试使用> /tmp/error_log.txt 1>&2参数运行它,我发现从PHP执行时会返回错误:

Exit with code 1 due to network error: ProtocolUnknownError

更有趣的是,当我删除--footer-html--header-html时,它可以很好地从PHP执行。但显然,生成的PDF缺少页眉和页脚。

页眉和页脚HTML没有任何外部资源引用。而且我不认为它是网络/ DNS问题,因为来自同一服务器的命令行它运行正常。

我会很高兴任何提示和提示,因为这让我发疯。提前谢谢。

2 个答案:

答案 0 :(得分:2)

如果有人遇到同样的问题,我会发布我用过的解决方法。我没有将http URL用于页脚和标题,而是将HTML放入本地tmp文件中,并将它们用作页脚和标题。这对我有用,可能也适用于其他人并节省一些时间。

答案 1 :(得分:0)

这是一个旧线程,但如果其他人搜索此错误:尝试它可能会有所帮助,这是由导入本地文件(例如:./image)的问题引起的。如果是这样,传递 --enable-local-file-access 标志可能会有所帮助。