我尝试在 apache(2.4.2)上使用 php(5.4.2)运行 wkhtmltopdf(0.11.0 rc1)。当我尝试启动wkhtmltopdf-i386 --use-xserver http://www.google.com google.pdf 2>&1
时,我可以找到我的 pdf。这是我的php代码
<?php
$cmd= '/usr/bin/wkhtmltopdf-i386 http://www.google.com google.pdf 2>&1';
$ret = shell_exec($cmd);
echo $ret;
?>
它适用于 apache 和命令行php test.php
。因为我的目标页面包含许多图像和一些“沉重”的 js 图表。当我尝试将 wkhtmltopdf 命令转换为 pdf 时,我遇到了分段错误。使它工作的唯一方法是使用 xvfb 作为 X11 模拟器。代码如下所示:
<?php
$cmd= '/usr/bin/xvfb-run /usr/bin/wkhtmltopdf-i386 --use-xserver http://www.google.com google.pdf 2>&1';
$ret = shell_exec($cmd);
echo $ret;
?>
该脚本适用于命令行php test.php
,但不适用于 apache。如果我查看 apache 的进程htop
,我可以看到有两个进程(with php test.php
):
- xvfb
- wkhtmltopdf
当我使用 apache 启动时,我只有 xvfb 进程。它在 apache 超时后完成,因为它正在等待 wkhtmltopdf 进程。
我可以使它与 apache (2.2.21) 和 php (5.3.10) 一起使用。
有什么我想念的吗?也许apache的配置文件中有一些东西?