php exec - переменные окружения при вызове команд из exec

noff

Новичок
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)"
Разницы так и не заметил. Все то же самое.

Пользователь, под которым работаю я - noff.
Апач, для удобства, работает от этого же пользователя.

Кто-нибудь может сказать что-то умное по этому поводу?

-~{}~ 26.08.08 15:46:

PS:
php 5.2.6 safe mode off
apache 2.1.8
linux CentOS 5.1

-~{}~ 26.08.08 15:51:

При этом, если запустить тот же самый php-скрипт без апача, то все работает.
 

noff

Новичок
Проверил, выдает меня нормально.
При этом
print shell_exec('locale');
выдает правильную кодировку.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
При этом, если запустить тот же самый php-скрипт без апача, то все работает.
не уверен как там у вас в CentOS правильный путь, но у меня в Дебиане есть файлик /etc/apache2/envvars, такого содержания:
# envvars - default environment variables for apache2ctl

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid
 

noff

Новичок
Все то же самое.

А print shell_exec("printenv") выдает все то же самое, что выдает та же команда при обычном запуске от моего имени.
 

noff

Новичок
Ну переменные ведь передаются нормально.
И язык и пользователь - все до кучи.
 
Сверху