centos — WkHTMLtoPDF 0.12.2.1 PHP exec xvfb-run: Ошибка: команда xauth не найдена

Я хочу сгенерировать PDF из URL, поэтому я выполняю команду с помощью 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"}

Я не знаю, как решить эту проблему! Любой может помочь мне в этом, моей среде ОС, как показано ниже:

  • ОС: 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);
?>

2

Решение

Для среды 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 спас меня для исправления этой проблемы ~~

2

Другие решения

Если вы используете PHP-FPM, по умолчанию переменные среды не наследуются в рабочий процесс. Вот почему xauth не найден в переменной окружения PATH, Чтобы это исправить, вы можете установить конфигурационный файл php-fpm, например, /etc/php-fpm.d/www.confобычно в разделе [www]:

  1. либо раскомментируйте строку:

    ;clear_env = no

  2. или добавьте новую строку:

    env[PATH] = '/usr/local/bin:/usr/bin:/bin'

0

По вопросам рекламы [email protected]