问题
I want to generate a PDF from a URL, so I execute the command by WkHTMLtoPDF as below:
/usr/bin/xvfb-run --server-args="-screen 0, 1920x1080x24" /usr/local/bin/wkhtmltopdf http://www.google.com /tmp/google.pdf 2>&1
The above command works fine on Terminal, But when I invoke the command inside PHP failed! And show me an error message as below:
array(2) {
[0]=> string(27) "which: no xauth in ((null))"
[1]=> string(40) "xvfb-run: error: xauth command not found"
}
I don't know how to resolve this issue! Anyone can help me on this, my OS environment as below:
- OS: CentOS release 6.6
- wkhtmltopdf version: 0.12.2.1
- nginx version: nginx/1.6.3
My PHP code as below:
<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.'<br />';
var_dump ($var);
?>
回答1:
For CentOS PHP environment the WkHTMLtoPDF tool not need xvfb-run to exec the command, But for Ubuntu PHP environment need xvfb-run to exec the command! I had revised my code as below and the issues was resolved:
$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';
}
The issues is currently resolved and Thanks @joaoBeno saved me for fixed this issue~~
回答2:
If you are using PHP-FPM, by default environmental variables are not inherited into a worker process. That's why xauth
cannot be found in environment variable PATH
. To fix this, you may set php-fpm's config file e.g. /etc/php-fpm.d/www.conf
, usually in section [www]
:
either uncomment the line:
;clear_env = no
or add new line:
env[PATH] = '/usr/local/bin:/usr/bin:/bin'
来源:https://stackoverflow.com/questions/30542462/wkhtmltopdf-0-12-2-1-php-exec-xvfb-run-error-xauth-command-not-found