Heim > Artikel > Backend-Entwicklung > Informationen zur Verwendung von Exec-, System- und anderen Funktionen zum Aufrufen von Systembefehlen in PHP
Dieser Artikel stellt hauptsächlich die Methode zur Verwendung von Exec-, System- und anderen Funktionen zum Aufrufen von Systembefehlen in PHP vor. Jetzt kann ich ihn mit Ihnen teilen.
PHP ist eine serverseitige Skriptsprache, die Aufgaben wie das Schreiben einfacher oder komplexer dynamischer Webseiten vollständig bewältigen kann. Aber manchmal ist es so, dass man zur Umsetzung einer bestimmten Funktion auf externe Programme (oder Befehle) des Betriebssystems zurückgreifen muss. Auf diese Weise kann man mit halbem Aufwand das doppelte Ergebnis erzielen
Die in PHP integrierten Funktionen exec und system können zum Aufrufen von Systembefehlen (Shell-Befehlen) sowie natürlich von Passthru, Escapeshellcmd und anderen Funktionen verwendet werden. In vielen Fällen kann uns die Verwendung der Exec-, System- und anderen Funktionen von PHP zum Aufrufen von Systembefehlen dabei helfen, unsere Arbeit besser und schneller abzuschließen. Exec hat mir beispielsweise vor zwei Tagen sehr geholfen, als ich .rar-Dateien stapelweise verarbeitet habe. Heute werde ich die häufig verwendeten Anrufsystemfunktionen sortieren und meine Erfahrungen mit allen teilen. Hinweis: Wenn Sie diese beiden Funktionen nutzen möchten, muss der abgesicherte Modus in php.ini ausgeschaltet sein, da PHP sonst aus Sicherheitsgründen den Aufruf von Systembefehlen nicht zulässt. Schauen Sie sich zunächst die Erklärung dieser beiden Funktionen im PHP-Handbuch an:exec --- Externe Programme ausführen
Syntax: string exec ( string command [, array &output [, int &return_var]] ) Erklärung: exec() führt den angegebenen Befehl command aus, gibt aber nichts aus, sondern übernimmt einfach den letzten Befehl Zeile wird im Ergebnis zurückgegeben. Wenn Sie einen Befehl ausführen und alle Daten aus dem Befehl abrufen müssen, können Sie die Funktion passhru() verwenden. Wenn das Argument-Array angegeben ist, wird das angegebene Array mit jeder vom Befehl ausgegebenen Zeile gefüllt. Hinweis: Wenn das Array bereits einige Elemente enthält, wird exec() es später an das Array anhängen Wenn Sie nicht möchten, dass diese Funktion Elemente anhängt, können Sie unset() aufrufen, bevor Sie das Array an exec() übergeben. Wenn die Parameter array und return_var angegeben sind, wird der zur Ausführung zurückgegebene Statusbefehl in diese Variable geschrieben. Hinweis: Wenn Sie die Übergabe von Daten aus Benutzereingaben an diese Funktion zulassen, sollten Sie escapeshellcmd() verwenden, um sicherzustellen, dass der Benutzer das System nicht dazu verleiten kann, beliebige Befehle auszuführen. Hinweis: Wenn Sie mit dieser Funktion ein Programm starten und es verlassen möchten, während es im Hintergrund läuft, müssen Sie sicherstellen, dass die Ausgabe des Programms in eine Datei oder andere Ausgabedaten umgeleitet wird stream, andernfalls bleibt PHP hängen, bis die Programmausführung beendet ist.system --- Externe Programme ausführen und Ausgabe anzeigen
Syntax: string system ( string command [, int &return_var] ) Beschreibung: system() führt den angegebenen Befehl aus und gibt das Ergebnis aus. Wenn der Parameter return_var angegeben ist, wird der Statuscode des ausgeführten Befehls in diese Variable geschrieben. Hinweis: Wenn Sie die Übergabe von Daten aus Benutzereingaben an diese Funktion zulassen, sollten Sie escapeshellcmd() verwenden, um sicherzustellen, dass der Benutzer das System nicht dazu verleiten kann, beliebige Befehle auszuführen. Hinweis: Wenn Sie mit dieser Funktion ein Programm starten und es verlassen möchten, während es im Hintergrund läuft, müssen Sie sicherstellen, dass die Ausgabe des Programms in eine Datei oder andere Ausgabedaten umgeleitet wird stream, andernfalls bleibt PHP hängen, bis die Programmausführung beendet ist. Wenn PHP als Servermodul läuft, versucht system(), den Ausgabepuffer des Webservers nach der Ausgabe jeder Zeile automatisch zu löschen. Gibt bei Erfolg die letzte Zeile des Befehls zurück, bei Fehlschlag „false“. Wenn Sie einen Befehl ausführen und alle Daten aus dem Befehl abrufen müssen, können Sie die Funktion passhru() verwenden. Beide werden zum Aufrufen von System-Shell-Befehlen verwendet. Der Unterschied: exec kann alle Ausführungsergebnisse an die $output-Funktion (Array) zurückgeben, $status ist der Status der Ausführung, 0 ist Erfolg, 1 ist Fehler Systerm muss die $output-Funktion nicht bereitstellen, es gibt das Ergebnis direkt zurück. Ebenso ist $return_var der Statuscode der Ausführung, 0 ist Erfolg. 1 ist FehlerExec-Beispiel:
<?php $a = exec("dir",$out,$status); print_r($a); print_r($out); print_r($status); ?>
Systembeispiel:
<?php $a = system("dir",$out); print_r($a); print_r($out); ?>
System, exce , Passthru Difference system() gibt die letzte Zeile der Shell-Ergebnisse aus und gibt sie zurück.
exec() gibt keine Ergebnisse aus und gibt die letzte Zeile der Shell-Ergebnisse zurück. Alle Ergebnisse können in einem zurückgegebenen Array gespeichert werden.
passthru() ruft nur den Befehl auf und gibt das Ergebnis des Befehls unverändert direkt auf das Standardausgabegerät aus.
Gleicher Punkt: Sie können den Statuscode der Befehlsausführung erhalten
Analyse der Funktion filter_var() und der Filterfunktion in PHP
Analyse zur str_replace-Substitutionsschwachstelle in PHP
Das obige ist der detaillierte Inhalt vonInformationen zur Verwendung von Exec-, System- und anderen Funktionen zum Aufrufen von Systembefehlen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!