WkHTMLtoPDF 0.12.2.1 PHP exec xvfb-run: Error: xauth command not found
WkHTMLtoPDF 0.12.2.1 PHP exec xvfb-run: Error: xauth command not found
我想从 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: 分OS 版本 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.'<br />';
var_dump ($var);
?>
对于CentOSPHP环境WkHTMLtoPDF工具不需要xvfb-运行执行命令,但是对于UbuntuPHP环境需要xvfb-运行执行命令!我修改了我的代码如下,问题已解决:
$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 救了我解决这个问题~~
如果您使用的是 PHP-FPM,默认情况下环境变量不会继承到工作进程中。这就是为什么在环境变量 PATH
中找不到 xauth
的原因。要解决这个问题,您可以设置 php-fpm 的配置文件,例如/etc/php-fpm.d/www.conf
,通常在 [www]
:
部分
要么取消注释行:
;clear_env = no
或添加新行:
env[PATH] = '/usr/local/bin:/usr/bin:/bin'
我想从 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: 分OS 版本 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.'<br />';
var_dump ($var);
?>
对于CentOSPHP环境WkHTMLtoPDF工具不需要xvfb-运行执行命令,但是对于UbuntuPHP环境需要xvfb-运行执行命令!我修改了我的代码如下,问题已解决:
$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 救了我解决这个问题~~
如果您使用的是 PHP-FPM,默认情况下环境变量不会继承到工作进程中。这就是为什么在环境变量 PATH
中找不到 xauth
的原因。要解决这个问题,您可以设置 php-fpm 的配置文件,例如/etc/php-fpm.d/www.conf
,通常在 [www]
:
要么取消注释行:
;clear_env = no
或添加新行:
env[PATH] = '/usr/local/bin:/usr/bin:/bin'