我通过wkhtmltopdf调用proc_open()来将HTML文档转换为PDF格式。
以下是一个示例脚本:
$wkhtmltopdf = '/bin/wkhtmltopdf';
$html = '<html><body><h1>Hello world!</h1></body></html>';
$process = proc_open($wkhtmltopdf . ' - -', [
0 => ['pipe', 'r'],
1 => ['pipe', 'w'],
2 => ['pipe', 'w']
], $pipes);
fwrite($pipes[0], $html);
fclose($pipes[0]);
$pdf = stream_get_contents($pipes[1]);
fclose($pipes[1]);
$err = stream_get_contents($pipes[2]);
fclose($pipes[2]);
$status = proc_close($process);
if ($status != 0) {
die('Status ' . $status . ': ' . var_export($err, true));
}
echo substr($pdf, 0, 4);
如果我从PHP CLI运行脚本,脚本运行正常,并按预期输出PDF标头:
%PDF
但是,如果我从Apache的PHP模块运行它,我总会得到同样的错误:
状态134:&#39;&#39;
谷歌搜索状态134给出类似&#34;断言失败&#34;这对我没什么帮助。 stderr
为空,也没有帮助。
为什么这段代码不在Apache的PHP模块下运行?
我在Fedora 25下使用wkhtmltopdf 0.12.3
,使用PHP 7.1。