Heim >Backend-Entwicklung >PHP-Problem >Was ist der Unterschied zwischen System und Exec in PHP?

Was ist der Unterschied zwischen System und Exec in PHP?

青灯夜游
青灯夜游Original
2020-09-01 10:49:594332Durchsuche

Der Unterschied zwischen System und Exec in PHP ist: System führt ein externes Programm aus und zeigt die Ausgabe an, und es kann Ergebnisse ausgeben und zurückgeben; Exec führt ein externes Programm aus und gibt keine Ergebnisse aus, sondern gibt die letzte Zeile des Ergebnisses zurück.

Was ist der Unterschied zwischen System und Exec in PHP?

Der Aufruf externer Befehle in PHP kann mit exec und system erfolgen. Was sind also die Unterschiede zwischen ihnen? In diesem Artikel wird Ihnen der Unterschied zwischen System und Exec in PHP vorgestellt.

1. exec --- Ein externes Programm ausführen

string exec ( string $command [, array &$output [, int &$return_var ]] )

$command: Der auszuführende Shell-Befehl

$output: Die Ausgabe des Shell-Befehls füllt dieses Array und jede Ausgabezeile füllt ein Element im Array. Bitte beachten Sie, dass die Funktion exec() den Inhalt an das Ende des Arrays anfügt, wenn das Array bereits einige Elemente enthält. Wenn Sie nicht am Ende des Arrays anhängen möchten, verwenden Sie die Funktion unset(), um das Array zurückzusetzen, bevor Sie es an die Funktion exec() übergeben. Der Rückgabestatus nach der Befehlsausführung ist 0

ps: 2>&1

exec ist nicht erfolgreich. Ein Trick zum Debuggen besteht darin, einen Pipeline-Befehl zu verwenden. Der Befehl gibt den Fehler während der Shell-Ausführung aus die $output-Variable. Gibt die Variable zur Analyse aus. Beispiel 1

(1) Struktur der index.php-Datei, in der sich der Code befindet

 

(2) Code

$out = [34];
$res = exec('ls 2>&1',$out,$return_status);
var_dump($res);
echo '------';
var_dump($out);
echo '------';
var_dump($return_status);
( 3) Ausführungsergebnisse
zhangxueqing:demo playcrab$ php  ./1/index.php
/Users/playcrab/www/demo/1/index.php:10:
string(11) "webuploader"
------/Users/playcrab/www/demo/1/index.php:12:
array(10) {
  [0] =>
  int(34)
  [1] =>
  string(1) "1"
  [2] =>
  string(6) "1.html"
  [3] =>
  string(5) "1.php"
  [4] =>
  string(10) "client.php"
  [5] =>
  string(14) "design-pattern"
  [6] =>
  string(3) "img"
  [7] =>
  string(17) "jquery.blockUI.js"
  [8] =>
  string(10) "static.php"
  [9] =>
  string(11) "webuploader"
}
------/Users/playcrab/www/demo/1/index.php:14:
int(0)

2. System ---

Führen Sie das externe Programm aus und zeigen Sie die Ausgabe an

string system ( string $command [, int &$return_var ] )
$command Der auszuführende Befehl $return_var Der Rückgabestatus nach der Befehlsausführung,

Wert ist 0, was auf Erfolg hinweist

Ergebnis zurückgeben: Erfolgreiche Rückgabe 0,

Fehler (Befehl existiert nicht usw.) Rückgabewert ungleich 0

1. Beispielcode

$res = system('ls 2>&1',$return_status);var_dump($res);echo '------';var_dump($return_status);
2. Ergebnis ausgeben

Zusammenfassung: Die Funktion

    system() ähnelt der in anderen Sprachen. Sie führt den angegebenen Befehl aus, gibt das Ergebnis aus und gibt es zurück. Der zweite Parameter ist optional und wird verwendet, um den Statuscode nach der Ausführung des Befehls abzurufen. Die Funktion exec() ähnelt der Funktion system(), führt jedoch nicht das Ergebnis aus, sondern gibt die letzte Zeile zurück des Ergebnisses. Obwohl nur die letzte Zeile des Befehlsergebnisses zurückgegeben wird, kann mit dem zweiten Parameter-Array das vollständige Ergebnis erhalten werden, indem die Ergebnisse Zeile für Zeile an das Ende des Arrays angehängt werden. Wenn das Array also nicht leer ist, ist es am besten, es vor dem Aufruf mit unset() zu löschen. Nur wenn der zweite Parameter angegeben ist, kann der dritte Parameter verwendet werden, um den Statuscode der Befehlsausführung zu erhalten.
  • Empfohlen: „

    PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen System und Exec in PHP?. 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