Я хочу запустить 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.Это приведет к строгим сравнениям с
''returnfalse.
Он может быть отключен, если 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