Запуск безголовой команды oowriter с использованием php exec() не выполняется

У меня возникают проблемы с использованием oowriter для преобразования документа в pdf с помощью php exec(). Строка, которую я запускаю ниже, отлично работает в CLI, но не в php с использованием exec().

$stdin = "/usr/bin/oowriter --headless --convert-to pdf -outdir /var/data/uploads/ /var/data/uploads/lorem.docx";

exec($stdin,$stdout,$return_int);

$stdout возвращает пустой Array, а $return_int возвращает 0.

Я искал вокруг, и единственным возможным решением, которое я смог найти, было добавление пути к oowriter (что, как вы можете видеть, я сделал). Есть ли проблема с разрешениями при запуске этой команды от имени пользователя apache? Есть несколько сообщений о том, что exec() вообще не работает, но я могу успешно запускать команды для imagemagick, используя этот метод. Поэтому мне кажется, что это проблема конфигурации конкретного приложения с openoffice.

Похоже, что это дубликат следующего, но ответы не были опубликованы:

невозможно запустить oowriter как веб-пользователь

К вашему сведению, я использую CentOS V6.1 и PHP v5.3.3. Спасибо.


person leejmurphy    schedule 14.10.2012    source источник
comment
Похоже на проблему с разрешением. Кто запускает exec() и с какими разрешениями?   -  person BudwiseЯ    schedule 15.10.2012
comment
@budwiser Я не указал ни одного пользователя, поэтому могу только предположить, что пользователь apache запускает exec() с любыми разрешениями по умолчанию.   -  person leejmurphy    schedule 15.10.2012
comment
Попробуйте chmod 777 /var/data/uploads/ -R (в целях отладки) хотя бы один раз, чтобы увидеть, имеем ли мы дело с правами пользователя.   -  person BudwiseЯ    schedule 15.10.2012
comment
Для @budwiser /var/data/uploads уже установлено значение 777, и, к вашему сведению, я могу успешно выполнять команды imagemagick для файлов в этом каталоге, используя exec() и пользователя apache.   -  person leejmurphy    schedule 15.10.2012
comment
Чтобы проверить это, можно использовать sudo с помощью apache для проверки команды — sudo apache command. Кроме того, вы можете sudo в exec : exec('echo 'password' | sudo -S leemurphy comand'); Это должно означать, что вы можете запустить команду от имени пользователя root (для проверки) - тогда вы можете попробовать настроить ее для обычного пользователя (создайте пользователя с именем «runoffice»)   -  person Boz    schedule 21.10.2012