Я хочу сгенерировать 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"}
Я не знаю, как решить эту проблему! Любой может помочь мне в этом, моей среде ОС, как показано ниже:
Мой код 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);
?>
Для среды 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 спас меня для исправления этой проблемы ~~
Если вы используете PHP-FPM, по умолчанию переменные среды не наследуются в рабочий процесс. Вот почему xauth
не найден в переменной окружения PATH
, Чтобы это исправить, вы можете установить конфигурационный файл php-fpm, например, /etc/php-fpm.d/www.conf
обычно в разделе [www]
:
либо раскомментируйте строку:
;clear_env = no
или добавьте новую строку:
env[PATH] = '/usr/local/bin:/usr/bin:/bin'