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);
?>

person Chunhui Zhang    schedule 30.05.2015    source источник
comment
Проверяли, отключен ли безопасный режим?   -  person joao Beno    schedule 30.05.2015
comment
Вы имеете в виду safe_mode = Off? Я проверил, что safe_mode отключен в php.ini.   -  person Chunhui Zhang    schedule 30.05.2015
comment
Вы пытались запустить только /usr/local/bin/wkhtmltopdf http://www.google.com /tmp/google.pdf?   -  person joao Beno    schedule 30.05.2015
comment
@joaoBeno Да, я пытался запустить команду без xvfb-run внутри PHP и потерпел неудачу! Но преуспеть в командной строке.   -  person Chunhui Zhang    schedule 30.05.2015
comment
@joaoBeno Я думаю, это проблема с разрешением? Как предоставить никому разрешение на запуск wkhtmltopdf?   -  person Chunhui Zhang    schedule 30.05.2015
comment
Какая ошибка была при запуске без xvfb-run?   -  person joao Beno    schedule 31.05.2015
comment
@joaoBeno Большое спасибо, вы спасли меня, чтобы исправить эту проблему, пожалуйста, посмотрите мой ответ :)   -  person Chunhui Zhang    schedule 31.05.2015
comment
Добро пожаловать! Пожалуйста, отметьте свой ответ как правильный!   -  person joao Beno    schedule 01.06.2015


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

person Chunhui Zhang    schedule 31.05.2015
comment
благодарю вас. в моем случае я запускаю его в cron вместе с xvfb, при проверке ошибки он говорит, что команда wkhtmltoimage не найдена, я просто изменил свою команду с wkhtmltoimage на /usr/local/bin/wkhtmltoimage - person Smough; 27.01.2021

Если вы используете 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'

person lubosdz    schedule 11.11.2017