2013-06-14 6 views
0

Я пытаюсь выполнить /path/to/script.pl в PHP; сценарий, между прочим, отправляет электронное письмо, когда оно выполняется. Когда я пытаюсьPHP exec() работает странно

exec("/path/to/script.pl");

Ничего не происходит. Некоторые другие соответствующие точки данных:

print exec("whoami"); 
/path/to/script.pl 
sudo -u apache /path/to/script.pl 

Первый работает в PHP, печатает apache; второй, запускаемый в оболочке, работает как ожидалось (отправляет электронное письмо); третий, запущенный в оболочке, также работает как ожидалось (отправляет электронное письмо).

От этого кажется, что exec отлично работает для некоторых команд, и что скрипт работает и работает для пользователя httpd (apache). Сам сценарий не выполняет ввода-вывода файлов, но он имеет доступ к базе данных MySQL и использует Net::SMTP::TLS, а также LWP::Simple. Любые идеи, что может пойти не так?

+1

Является ли ваш скрипт установленным пользователем apache? –

+0

Да, это 'chmod 755'; Я также думал, что 'sudo -u apache/path/to/script.pl' будет дважды проверять, что это неправильно? – kyle

+1

Weird ... попробуйте использовать этот файл для пользователя apache ... Я использую команды popen и pclose, и он отлично работает. Вы пытались проверить ваш журнал php на наличие ошибок? Не забудьте активировать регистрацию ошибок php. –

ответ

0

Кредит Walter из комментариев для того, чтобы сообщить мне, чтобы на самом деле проверить журналы ошибок.

Сценарий был исполнен (chmod 755), но каталог в иерархии был rwxr-x---; обновление этого каталога до rwxr-xr-x устраняло проблему. Каждый каталог на пути сценария exec() 'd должен быть доступен для чтения по httpd.

Проблема решена.

+0

Я рад, что помог вам. –

Смежные вопросы