Я использую функцию shell_exec PHP для выполнения двоичного файла .exe программы C.using php shell_exec для выполнения двоичного файла для захвата выходных файлов
Программа My C принимает входной текстовый файл, а на выходе создается несколько текстовых файлов. Чтобы интегрировать его с веб-интерфейсом, я использую функцию shell_exec php для выполнения сценария оболочки, который, в свою очередь, вызывает двоичный файл C.exe.
Этот двоичный файл .exe, текстовый файл ввода, сценарий оболочки и файл php находятся на стороне сервера. Я дал chmod 777 доступ к указанным файлам на стороне сервера для целей тестирования.
Экстракт в PHP исполняющего скрипт выглядит следующим образом:
эхо shell_exec ('ш segments.sh 2> & 1');
Теперь я здесь выполняю скрипт, и скрипт запускает двоичный файл с расширением .exe следующим образом:
-> segments.sh
./auto_import.exe input_file.txt -терминами
auto_import - это двоичный файл .exe.
Когда я запускаю сценарий оболочки отдельно в моем терминале, он дает мне правильный вывод. Это будет 4-5 различных текстовых файлов.
Но когда я вызываю скрипт оболочки с PHP, я не могу получить какой-либо вывод, и я не уверен, как получить вывод из моего двоичного файла, который представляет собой количество текстовых файлов.
Я попытался предоставить абсолютные пути к файлам для моих, например:
В PHP файл сценария оболочки, который вызывается:
эхо shell_exec ('ш /path/segments.sh 2> & 1');
В сценарии оболочки, двоичный файл называется следующим
эхо shell_exec ('ш/путь/двоичное 2> & 1');
Я также использовал EXEC функцию следующим образом:
$ CMD = "/auto_import.exe input_file.txt -термины"; echo exec ($ cmd, $ output);
Не могли бы вы помочь мне в этом отношении?
Нет Hayden, то shell_exec здесь не работает , –
Vivek Ваш вопрос должен быть уточнен, сейчас это немного неоднозначно. Если shell_exec фактически не запускает ваш файл, это чаще всего проблема с этим путем.Убедитесь, что когда вы указываете shell_exec, что вы делаете это с * абсолютным * пути к исполняемому файлу, например, shell_exec («/ usr/home/gary/php/binary.exe»), а не только shell_exec ("binary.exe"). –
Я также использовал абсолютные пути. Но это не сработало. –