Я хочу запустить 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