Libreoffice безголовый результат процесса не возвращается, но ожидает тайм-аут

Мы используем libreoffice --headless какое-то время, сначала через Debian, а за последние месяцы мы перешли на CentOS. Мы используем Процесс Symfony Команда для преобразования docx в pdf, упрощенная команда выглядит так:

libreoffice --headless --convert-to pdf \
--outdir /home/conversionoutdir \
/home/conversionindir/4f00ac05aee274967b.docx

Процесс Symfony, который выполняет вышеупомянутую команду, довольно прост:

    $process = new Process($cmd);
$process->mustRun();

Все работало хорошо, но через пару дней преобразование больше не завершается, и процесс завершается до истечения 60-секундного тайм-аута.

Отлаживали это, делая то же самое преобразование на нашем DEV сервер, где все просто отлично. Также пытались конвертировать маленькие и большие документы, чтобы увидеть или количество страниц имеет значение для достижения тайм-аута. Также выполнил команду непосредственно в командной строке, где преобразование также в порядке и заканчивается в течение нескольких секунд.

Исключение перехватывается нашим приложением и отправляется регистратору:

Процесс \ «/ usr / bin / libreoffice — без заголовка —nologo —nofirststartwizard —norestore —convert-to pdf: writer_web_pdf_Export —outdir / home / translationoutdir /home/conversionindir/4f00ac05aee274967b.docx \» превысил время 60 секунд.

Похоже, PHP не может отслеживать процесс больше. Что здесь может происходить? Любые подсказки о том, как отладить это дальше?

Редактировать: после абстрагирования компонента процесса Symfony, установив conversionoutdir Разрешения на 777 и выполнение следующего фрагмента, преобразование все еще остается зависать, если выполняется из PHP:

$output = array();
exec('libreoffice --headless --convert-to pdf \
--outdir /home/conversionoutdir \
/home/conversionindir/4f00ac05aee274967b.docx', $output);
print_r($output);

3

Решение

Нашел решение этой проблемы, как-то Linux HOME переменная была изменена на /root и libreoffice не смог выполнить преобразование по этому пути. Может быть, это как-то изменилось при перезапуске Apache.

Решение состоит в том, чтобы всегда позволить PHP установить /tmp как HOME переменная:

putenv('HOME=/tmp');

Следующие сообщения предоставляют больше информации:

3

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

Других решений пока нет …

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