Informationen zur Verwendung von Exec-, System- und anderen Funktionen zum Aufrufen von Systembefehlen in PHP

不言
Freigeben: 2023-04-01 16:50:01
Original
2174 Leute haben es durchsucht

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 Fehler

Exec-Beispiel:

<?php 
$a = exec("dir",$out,$status); 
print_r($a); 
print_r($out); 
print_r($status); 
?>
Nach dem Login kopieren

Systembeispiel:

<?php 
$a = system("dir",$out); 
print_r($a); 
print_r($out); 
?>
Nach dem Login kopieren

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

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich ist die chinesische PHP-Website!

Verwandte Empfehlungen:

Über die Methode von preg_replace() in PHP zum regelmäßigen Ersetzen aller qualifizierten Zeichenfolgen

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage