2016-07-11 44 views
0

Ich benutze shell_exec-Funktion von PHP, um eine binäre .exe-Datei eines C-Programms auszuführen.mit php shell_exec, um eine Binärdatei zum Erfassen von Ausgabedateien auszuführen

Mein C-Programm nimmt eine Eingabetextdatei und erstellt bei der Ausgabe mehrere Textdateien. Um es mit dem Web-Frontend zu integrieren, benutze ich die shell_exec -Funktion von PHP, um ein Shell-Skript auszuführen, das wiederum die binäre C.exe-Datei aufruft.

Diese binäre .exe-Datei, Eingabetextdatei, Shell-Skript und die PHP-Datei befindet sich auf der Serverseite. Ich habe chmod 777 zu Testzwecken Zugriff auf die genannten Dateien auf der Serverseite gewährt.

Der Extrakt in PHP Ausführen Shell-Skript ist wie folgt:

echo shell_exec ('sh segments.sh 2> & 1');

Nun, hier habe ich ein Shell-Skript und den Shell-Skript bin Ausführung läuft die binäre EXE-Datei wie folgt:

-> segments.sh

./auto_import.exe input_file.txt -Klauseln

auto_import ist die C-binäre .exe-Datei.

Wenn ich das Shell-Skript einzeln in meinem Terminal ausführen, gibt es mir richtige Ausgabe. Das ist die Ausgabe wird 4-5 verschiedene Textdateien sein.

Aber wenn ich das Shell-Skript mit PHP aufrufen, bin ich nicht in der Lage, irgendeine Ausgabe zu erhalten, und ich bin nicht sicher, wie die Ausgabe von meiner Binärdatei, die die Anzahl der Textdateien ist.

ich versucht habe, die einen absoluten Pfad zu meinen Dateien für zB:

In PHP-Datei-Shell-Skript, das durch aufgerufen:

Echo shell_exec ('sh /path/segments.sh 2> & 1');

In Shell-Skript wird Binärdatei wie folgt

genannt

echo shell_exec ('sh/path/Binär-2> & 1');

Ich habe auch exec-Funktion wie folgt verwendet:

$ cmd = "/auto_import.exe input_file.txt -Klauseln"; echo exec ($ cmd, $ output);

Könnten Sie mir in dieser Hinsicht helfen?

Antwort

0

Wenn ich Sie richtig verstehe, wird Ihr Befehl ausgeführt, wie es sollte und Dateien erzeugen, und Sie müssen diese jetzt nur mit PHP lesen. Eine Möglichkeit, dies zu tun, ist wie folgt:

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

Wenn Sie die Datei Zeile für Zeile lesen müssen, sollten Sie „fgets“ können, wie hier gezeigt: How to read a file line by line in php

+0

Kein Hayden, der shell_exec hier nicht funktioniert . –

+0

Vivek Ihre Frage muss geklärt werden, gerade jetzt ist es ein wenig mehrdeutig. Wenn die Shell_exec Ihre Datei nicht wirklich ausführt, ist es meistens ein Problem mit dem Pfad.Stellen Sie sicher, dass Sie bei der Angabe von shell_exec mit dem * absoluten * Pfad zu der auszuführenden Datei zB shell_exec ("/ usr/home/gary/php/binary.exe") statt nur shell_exec ("binary.exe"). –

+0

Ich habe auch die absoluten Pfade benutzt. Aber es hat nicht funktioniert. –