从PHP执行带有页眉和页脚的wkhtmltopdf时出现协议未知错误


ProtocolUnknownError when executing wkhtmltopdf from PHP with header and footer?

我有一个奇怪的问题从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问题,因为从同一服务器的命令行它工作得很好。

我很乐意得到任何提示和提示,因为这快把我逼疯了。

如果有人有同样的问题,我会张贴我的变通解决方案,我已经使用。我没有使用http URL作为页脚和头,而是将HTML放入本地tmp文件中,并使用它们作为页脚和头。

这对我来说很有效,可能也适用于其他人,节省了一些时间。

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