通过proc_open()的wkhtmltopdf在Apache的PHP模块中不起作用

时间:2017-01-08 20:09:11

标签: php wkhtmltopdf proc-open

我通过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。

0 个答案:

没有答案