5

URLからPDFを生成したいので、以下のようにWkHTMLtoPDFでコマンドを実行します。

/usr/bin/xvfb-run --server-args="-screen 0, 1920x1080x24" /usr/local/bin/wkhtmltopdf http://www.google.com /tmp/google.pdf  2>&1

上記のコマンドはターミナルでは正常に動作しますが、PHP 内でコマンドを呼び出すと失敗しました! そして、以下のようなエラーメッセージを表示してください:

array(2) { 
    [0]=> string(27) "which: no xauth in ((null))"
    [1]=> string(40) "xvfb-run: error: xauth command not found"
}

この問題の解き方がわかりません!以下のような私のOS環境で、誰でも私を助けることができます:

  • OS: CentOS リリース 6.6
  • wkhtmltopdf バージョン: 0.12.2.1
  • nginx バージョン: nginx/1.6.3

以下のように私のPHPコード:

<php
    $var = array();
    $res = 0;

    $cmd = '/usr/bin/xvfb-run --server-args="-screen 0, 1920x1080x24" /usr/local/bin/wkhtmltopdf http://www.google.com /tmp/google.pdf  2>&1';

    exec($cmd, $var, $res);

    echo $cmd.'&lt;br /&gt;';
    var_dump ($var);
?>
4

2 に答える 2

5

CentOS PHP 環境では、WkHTMLtoPDF ツールはコマンドを実行するために xvfb-run を必要としませんが、Ubuntu PHP 環境では、コマンドを実行するために xvfb-run が必要です! 以下のようにコードを修正し、問題を解決しました。

$osName = 'lsb_release -d 2>&1';
exec('lsb_release -d', $osName);
$isCentOS   = strrpos(strtolower($osName[0]), 'centos'); 

$cmd = '/usr/local/bin/wkhtmltopdf http://www.google.com /tmp/google.pdf  2>&1';
if ($isCentOS === false) {
     $cmd = '/usr/bin/xvfb-run --server-args="-screen 0, 1920x1080x24" /usr/local/bin/wkhtmltopdf http://www.google.com /tmp/google.pdf  2>&1';
} 

問題は現在解決されており、おかげで@joaoBenoがこの問題を修正してくれました~~

于 2015-05-31T04:01:33.993 に答える