PHP Laravel LibreOffice DOC в PDF не конвертируется через браузер

В настоящее время я загружаю файл DOC или DOCX через DropzoneJS, а затем преобразую его в PDF на сервере, используя LibreOffice PHP exec. Если я набрал его вручную на сервере, он будет конвертироваться, но если я запустил его через браузер, он не конвертируется. Я пытаюсь запустить soffice без sudo, но команда запуска через браузер не работает. Как я могу конвертировать его через браузер?

Ручная команда в терминале:

/opt/libreoffice5.2/program/soffice —convert-to pdf
/var/www/html/my_system/public/msword.doc —outdir
/ Вар / WWW / HTML / my_system / хранение / приложение / котировки

команда ls -liah результаты для папок:

my_system, хранилище, приложение, цитаты = drwxrwxrwx apache apache

мой sudo visudo Результаты (вставленные строки без комментариев в порядке):

Defaults    requiretty
Defaults   !visiblepw
Defaults    always_set_home

www-data ALL=NOPASSWD:ALL
robert ALL=NOPASSWD:ALL
apache ALL=NOPASSWD:ALL

PHP-файл:

$command = '/opt/libreoffice5.2/program/soffice --convert-to pdf /var/www/html/my_system/public/msword.doc --outdir /var/www/html/my_system/storage/app/quotations';

if (!$return) {
echo "PDF Created Successfully";
} else {
echo 'PDF not created. Command = ' . $command . '=' . $return;
}

Благодарю.

1

Решение

Нашел правильный ответ через https://superuser.com/questions/627266/convert-file-to-pdf-using-libreoffice-under-user-apache-i-e-when-using-php

Цитирую правильный ответ:

Итак, вам нужно i) дать пользователю apache дом и ii) дать ему
каталог, к которому он имеет доступ для записи. Итак, создайте каталог tmp в
та же папка, где вы храните свою веб-страницу, а затем запустите
следующий код php:

<?php
shell_exec('export HOME=/tmp && libreoffice --headless -convert-to pdf --outdir ./tmp /tmp/ayb/document_34.doc');
?>

Я только что проверил, и он отлично работает на моей машине. Убедитесь, что ваш
./tmp имеет свои права доступа 777. Также может потребоваться перезагрузка
Apache, если вы слишком много играете с ним. У меня перестало работать
через некоторое время, когда я внес изменения, и мне нужно было перезапустить его.

0

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

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

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