Я использую Ubuntu с libreOffice. Я установил unoconv
для преобразования файла *.odp
в *.pdf
. Когда я запускаю команду unoconv -f pdf myfile.odp
из терминала, она работает очень хорошо. Я хочу сделать то же самое с использованием метода PHP shell_exec()
. Итак, я написал следующий код:
$output = shell_exec('unoconv -f pdf test.odp 2>&1');
echo $output;
Но он показывает следующую ошибку:
/usr/bin/python: /opt/lampp/lib/libz.so.1: no version information available (required by /usr/bin/python)
Traceback (most recent call last): File "/usr/bin/unoconv", line 24, in import uno,
unohelper File "/usr/lib/python2.7/dist-packages/uno.py", line 34, in import pyuno SystemError: dynamic module not initialized properly
Как решить эту проблему?
Спасибо заранее.
Apach может быть настроен на запрет вызова некоторых команд / библиотек ...
Но, возможно, переменные окружения (например, $ PATH ...) не одинаковы для вашего пользователя и пользователя Apach (www-data) или что-то в этом роде.
Вот пример того, что вы можете сделать для поиска проблемы:
Попробуйте вызвать set
или setenv
, чтобы получить список переменных.
Создайте базовый скрипт callset.sh
:
#!/bin/bash
set
(не забудьте chmod +x callset.sh
дать разрешение на выполнение):
Затем вызовите этот скрипт bash
из PHP:
$output = shell_exec ('/your/dir/callset.sh 2>&1');
echo $output
или
exec ("/your/dir/callset.sh", $output, $exitstatus);
print_r ($output);
Затем проверьте разницу с помощью своего собственного вызова set
.
Наконец, укажите пропущенные переменные, например:
$output = shell_exec('PATH=aaa:bbb:ddd unoconv -f pdf test.odp 2>&1');