2015-05-30 4 views
1

Я хочу, чтобы создать PDF из URL, так что я выполнить команду, WkHTMLtoPDF, как показано ниже:WkHTMLtoPDF 0.12.2.1 PHP Exec Xvfb перспектива: Ошибка: Xauth команды не найден

/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); 
?> 
+0

Проверено, если безопасный режим выключен? –

+0

Вы имеете в виду safe_mode = Off? Я проверил safe_mode is Off в php.ini –

+0

Вы пытались запустить только '/ usr/local/bin/wkhtmltopdf http://www.google.com/tmp/google.pdf'? –

ответ

0

для среды CentOS PHP инструмент WkHTMLtoPDF не нужно Xvfb-бежать, чтобы EXEC команду, но для Ubunt u 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 спас меня для фиксированного этой проблемы ~~

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^