2016-07-08 13 views
7

Ich versuche, eine .jar-Anwendung von PHP exec auszuführen:PHP: ‚Java‘ nicht als interner oder externer Befehl erkannt wird

exec('java -jar parser.jar $inputstring 2>&1', $output); 

ich es bekommen kann auf cmd ausführen, und Java -version gibt zurück, also habe ich Java installiert. Es scheint, dass dies ein Weg Problem ist, aber ich bin am Ende meines Wissens.

Ich habe versucht, den vollständigen Pfad anzugeben, C: \ Programme (x86) \ Java \ jdk1.8.0_91 \ bin; zu Systemvariablen, mit shell_exec, kein Erfolg. Ich bekomme den gleichen Fehler.

Jede Hilfe würde sehr geschätzt werden.

+3

Zeigen Sie, wie Sie den vollständigen Pfad hinzugefügt. Da sind Räume drin. Wenn Sie den Pfad nicht angeben, z. 'shell_exec ('" C: \ Programme \ .... ")', dann werden Sie versuchen, ein Programm namens 'c: \ program.exe' mit dem Argument' files \ .... ' –

+0

auszuführen Ich habe: shell_exec ('"C: \ Programme (x86) \ Java \ jdk1.8.0_91 \ bin \ java.exe" -jar parser.jar $ inputstring 2> &1'); Wenn ich nicht 2> & 1 habe, ist es Ich bekomme den gleichen "Java" nicht erkannt Fehler. – Anda

+0

2> & 1 leitet stderr auf stdout um, weshalb Sie die Fehlermeldung erhalten. shell_exec gibt nur stdout zurück, so dass Sie nie die Fehlermeldung sehen würden. –

Antwort

0

verwenden ....

exec('java -jar parser.jar '.$inputstring.'2>&1', $output); 
or 
shell_exec("java -jar parser.jar $inputstring 2>&1 $output"); 
or 
string exec ('java -jar parser.jar' [, array &$output [, int &$return_var ]])