php exec и shell_exec не работают - PullRequest
4 голосов
/ 10 июля 2009

Я хочу запустить exe-файл на моем сервере и вернуть вывод на экран браузера. Exe-файл принимает входной файл и затем возвращает данные на экран.

Почему этот код не работает?

<code>$output = shell_exec('myprogram < INP.DAT');
echo "<pre>" . var_export($output, TRUE) ."
\\ п ";

На экране браузера отображается «NULL». Я также пробовал exec (). Там он возвращает "Array ()".

Ответы [ 4 ]

7 голосов
/ 10 июля 2009

Один из комментариев на shell_exec странице руководства гласит:

Остерегайтесь следующих несоответствий: shell_exec(), и оператор обратного удара не будет возвращать строку, если выходные данные команды пусты, - вместо этого они вернут NULL.

Это сделает строгие сравнения с '' return false.


Может быть отключено, если PHP находится в безопасном режиме .

shell_exec() (функциональный эквивалент бэктиков)
Эта функция отключена, когда PHP работает в безопасном режиме.

exec()
Вы можете выполнять только исполняемые файлы в пределах safe_mode_exec_dir. Из практических соображений в настоящее время не разрешено иметь .. компонентов в пути к исполняемому файлу. escapeshellcmd() выполняется для аргумента этой функции.

Вы можете проверить настройки PHP вашего сервера с помощью функции phpinfo().

2 голосов
/ 11 июня 2010

Доступна ли myprogram из оболочки по умолчанию? Это в определенном каталоге?
Попробуйте заменить myprogram < INP.DAT на /full/path/to/myprogram < INP.DAT

2 голосов
/ 10 июля 2009

это должно работать:

$output = array();
exec('myprogram < INP.DAT', $output);
var_dump($output);
0 голосов
/ 27 марта 2013

Иногда эти функции отключены, если php не находится в безопасном режиме, вы должны включить их в php.ini

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