php не может выполнить скрипт perl через exec - PullRequest
0 голосов
/ 24 февраля 2011

Я пытаюсь выполнить Perl-скрипт из php. Этот Perl-скрипт читает веб-страницу и создает XML-файл с некоторыми данными. Если я выполняю его через оболочку, все работает как положено, но когда я пытаюсь автоматизировать все это с помощью php, ничего не работает.

Я пробовал это:

exec("perl /absolute/path/to/perl/script/parser.pl", $output, $result);

при выводе переменной $result отображается 2. Я включал и выключал php safe_mode несколько раз, но ничего не изменилось. Также пытался установить safe_mode_exec_dir без положительных результатов.

Когда я исполняю простой ls

exec("ls", $output, $result);

все идет хорошо, я получаю список файлов, а $result - это 0.

В скрипте perl есть chmod 777, чтобы не было проблем с разрешением Также в его папке 777.

Я почти уверен, что проблема связана с сервером, но я не могу выяснить, что.

Любая помощь будет очень признательна.

Спасибо

Ответы [ 2 ]

3 голосов
/ 24 февраля 2011

Возможно, вам нужно указать полный путь к исполняемому файлу perl.

Попробуйте набрать which perl, чтобы увидеть, что такое полный путь, затем поместите этот полный путь в ваш вызов exec.

1 голос
/ 24 февраля 2011

В вашем примере, похоже, отсутствует конечная кавычка для первого аргумента.Я также хотел бы убедиться, что исполняемый файл для Perl находится на вашем пути.Наконец, не только в папке должен быть установлен бит выполнения, но и во всех каталогах, вплоть до корневого, необходимо установить perl для доступа к сценарию.Обычно каталог имеет значение 750, так что группа может войти, но не весь мир.Как пользователь, вы можете пройти туда и увидеть сценарий, но вы должны смотреть на него с точки зрения пользователей, выполняющих сценарий - предположительно, с идентификатором вашего веб-сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...