2017-11-07 1 views
0

Ich habe ein Programm, das von cmd.exe ausgeführt werden muss und ein paar Parameter supplid sein. Der Befehl sieht so aus:PHP exec gibt keine Ausgabe zurück

query.exe USERNAME PASSWORD WMI_QUERY MACHINE 

Dieses Programm funktioniert gut. Aber wenn ich versuche, es von PHP mit dem folgenden Code auszuführen:

function execute_query($ip, $username, $password, $query){ 

    $runCMD ="query.exe " . $username . " " . $password . ' "' .$query . '" ' . $ip; 
    echo exec($runCMD); 
    print_r ($stdout); 
} 

Ich bekomme keine Ausgabe. Es besagt, dass der Prozess erfolgreich beendet wurde, aber nichts anderes, obwohl das Programm ausgeführt wird und die Ausgabe erfolgreich zurückgibt. Ich benutze Windows und XAMPP mit PHP 7.1 Ich müde mit shell_exec, aber hatte kein Glück. Irgendwelche anderen Ideen?

+1

'exec () 'gibt die Ausgabe in einem Array für jede Ausgabezeile im Terminal aus. iirc shell_exec gibt nichts zurück. Überprüfen Sie das Array-Parameter, der durch Verweis übergeben wird - http://php.net/manual/en/function.exec.php – brianforan

+0

auch $ stdout ist nicht definiert – brianforan

+0

wops, ignorieren Sie meinen ersten Kommentar, ich weiß nicht, warum ich dachte shell_exec gibt nichts zurück, aber $ stdout ist immer noch nicht definiert – brianforan

Antwort

0

ich in der Regel verwenden Sie einfach:

passthru("the_command 2>&1"); 

der 2> & 1 Bit ist STDERR zu STDOUT umzuleiten, das ist, wo Ihr Ausgang ist wahrscheinlich, wenn der Befehl fehlschlägt ...

+0

auch, um die Ausgabe zu erfassen, können Sie ob_start() und ob_get_contents() verwenden –

+0

Hat nicht funktioniert, immer noch nichts –

Verwandte Themen