#php
#php
Вопрос:
У меня возникла проблема с выполнением perl-скрипта из php с использованием функции shell_exec().
Это то, что я пробовал (и это работало раньше).
$perl = shell_exec("/usr/bin/perl cbh_script_clean.pl");
echo ($perl);
Это не сработает, поскольку $ perl ничего не содержит после выполнения this.
Мысли?
Любая помощь приветствуется!
Спасибо.
Комментарии:
1. Что происходит, когда вы запускаете
/usr/bin/perl cbh_script_clean.pl
прямо из командной строки?2. Но что происходит? Что вы видите на экране после выполнения команды?
3. Попробуйте добавить
2>amp;1
после команды. Скорее всего, путь к perl-скрипту просто неверен. Также загляните в error.log, который в противном случае содержит соответствующее сообщение.4. @webbie: скрипт запущен полностью. он успешно запускает скрипт
5. @mario: что именно это делает?
Ответ №1:
Тогда я сделаю это ответом.
Часто можно добавить, 2>amp;1
чтобы перенаправить вывод stderr в обычный поток stdout. Таким образом, вы получаете любые сообщения об ошибках в переменной PHP. (В противном случае они будут потеряны с помощью system
/ exec
/ shell_exec
, вот почему люди иногда используют proc_open
вместо этого явные каналы).
$perl = shell_exec("/usr/bin/perl cbh_script_clean.pl 2>amp;1");
echo ($perl);
Ответ №2:
Попробуйте это:
$perl = shell_exec(«/usr/bin/perl cbh_script_clean.pl 2>/dev/null >/dev/null amp;»); echo ($ perl);