php exec и shell_exec не работают

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

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

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

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

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

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

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


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

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

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

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

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

 $ output = array ();
 exec ('myprogram <INP.DAT', $ output);
 var_dump ($ выход);

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

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