2016-07-11 6 views
0

Я использую функцию 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);

Не могли бы вы помочь мне в этом отношении?

ответ

0

Если я правильно вас понимаю, ваша команда выполняет как следует и создает файлы, и вам нужно просто прочитать их сейчас с помощью PHP. Один из способов сделать это заключается в следующем:

<?php 
$fileName = 'somefilethatyougenerated.txt'; 
$file = fopen($fileName, "r") or die("Unable to open file!"); 
$content = fread($file,filesize($fileName)); 
// manipulate contents here 
fclose($myfile); 
?> 

Если вам необходимо прочитать файл построчно, рассмотреть вопрос об использовании «fgets», как показано здесь: How to read a file line by line in php

+0

Нет Hayden, то shell_exec здесь не работает , –

+0

Vivek Ваш вопрос должен быть уточнен, сейчас это немного неоднозначно. Если shell_exec фактически не запускает ваш файл, это чаще всего проблема с этим путем.Убедитесь, что когда вы указываете shell_exec, что вы делаете это с * абсолютным * пути к исполняемому файлу, например, shell_exec («/ usr/home/gary/php/binary.exe»), а не только shell_exec ("binary.exe"). –

+0

Я также использовал абсолютные пути. Но это не сработало. –

 Смежные вопросы

  • Нет связанных вопросов^_^