PHP shell_exec () в Ubuntu

Я использую 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

Как решить эту проблему?

Спасибо заранее.

1
задан 18 January 2012 в 17:36

1 ответ

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');
0
ответ дан 18 January 2012 в 17:36

Другие вопросы по тегам:

Похожие вопросы: