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のプロセスを調べると、2つのプロセス(with )htop
があることがわかります。php test.php
- xvfb
- wkhtmltopdf
apacheで起動すると、xvfbプロセスしかありません。wkhtmltopdfプロセスを待機しているため、apacheからのタイムアウトで終了します。
私はそれをapache(2.2.21)とphp(5.3.10)で動作させることができます。
私が見逃しているものはありますか?たぶん、apacheの設定ファイルに何かありますか?