Heim  >  Artikel  >  Backend-Entwicklung  >  Was soll ich tun, wenn system() in PHP keine Ausgabe zurückgibt?

Was soll ich tun, wenn system() in PHP keine Ausgabe zurückgibt?

王林
王林Original
2021-09-27 14:41:232456Durchsuche

Lösung für das Problem, dass system() in PHP keine Ausgabe zurückgibt: Leiten Sie den Standardfehler auf die Standardausgabe um, indem Sie [2 >& 1] an den Befehl anhängen, zum Beispiel [exec('some_command --option 2> & 1',$output,$ret);].

Was soll ich tun, wenn system() in PHP keine Ausgabe zurückgibt?

Die Betriebsumgebung dieses Artikels: Windows 10-System, PHP 7, Thinkpad T480-Computer.

Kürzlich habe ich bei der Arbeit zufällig entdeckt, dass die Ausführung gängiger Befehle wie „ls“, exec() gut funktionieren kann, zum Beispiel:

 exec('ls',$输出,$ retval); 
 var_dump($ output,$ retval); 
 // $ output包含文件名数组,retval === 0

Aber wenn ich versuche, ein anderes Programm auszuführen, kann ich die Ausgabe nicht erhalten , wie folgt:

exec('some_command --a_parameter',$ output ,$ retval); 
 var_dump($ output,$ retval); 
 // $ output包含一个空数组,结束$ retval === 0

Beim Ausführen des Befehls direkt über die Befehlszeile werden einige Zeilen gedruckt. Ich weiß, dass die Befehlsausführung erfolgreich war, und ich kann die Ergebnisse sehen (einige Dateiaktualisierungen, Datenhinzufügung usw.), aber Ich kann die Ausgabe nicht sehen.

Die Funktion exec() erfasst nur die Standardausgabe. Ich bin nicht sicher, ob der Standardfehler immer an das Apache-Fehlerprotokoll gesendet wird, aber es scheint möglich zu sein.

Wenn Sie kein Unix-System verwenden müssen, können wir den Standardfehler tatsächlich auf die Standardausgabe umleiten, indem wir 2>& 1 an den Befehl anhängen, sodass das Problem gelöst werden kann, zum Beispiel:

 exec('some_command --option 2>& 1',$ output,$ ret);

Empfohlen Lernen: php Training

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn system() in PHP keine Ausgabe zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn