php exec - переменные окружения при вызове команд из exec
Вот какая ситуация. Имеем linux с openoffice. Задача: из PHP выполнить exec("convert.sh").
convert.sh содержит команду запуска openoffice с целью сконвертировать файл документа в файл другого формата. PDF, к примеру. Т.е. там вызывается макрос openoffice'а.
Чтобы неголословно, то вот так:
convert.sh:
Код:
soffice -invisible -norestore -nodefault "macro:///mkechinov.ConvertToPDF.Convert($1,$2,$3,$4,$5)"
Как видим, convert.sh принимает 5 параметров и передает их в макрос. На самом деле это неважно.
Важно то, что, если вызвать convert.sh из терминала (из командной строки), то все замечательно работает. Но, если вызывать абсолютно то же самое из PHP, то openoffice говорит, что невозможно определить язык интерфейса, вследствие чего невозможно запустить программу. И все.
У меня такие мысли, что PHP запускает команды от неизвестно кого и у этого кого-то не инициализированы переменные окружения, и, следовательно, и язык.
Но, я в скрипт convert.sh добавил также установку переменных:
Код:
export LANG="ru_RU.UTF-8"
export LC_ALL="ru_RU.UTF-8"
soffice -invisible -norestore -nodefault "macro:///mkechinov.ConvertToPDF.Convert($1,$2,$3,$4,$5)"
export LC_ALL="ru_RU.UTF-8"
soffice -invisible -norestore -nodefault "macro:///mkechinov.ConvertToPDF.Convert($1,$2,$3,$4,$5)"
Разницы так и не заметил. Все то же самое.
Пользователь, под которым работаю я - noff.
Апач, для удобства, работает от этого же пользователя.
Кто-нибудь может сказать что-то умное по этому поводу?
php 5.2.6 safe mode off
apache 2.1.8
linux CentOS 5.1
При этом, если запустить тот же самый php-скрипт без апача, то все работает.