Heim > Backend-Entwicklung > PHP-Tutorial > Zusammenfassung der Methoden zum Aufrufen einer externen Shell in PHP 1

Zusammenfassung der Methoden zum Aufrufen einer externen Shell in PHP 1

WBOY
Freigeben: 2016-07-29 09:16:02
Original
979 Leute haben es durchsucht

Wenn das PHP-Programm im abgesicherten Modus läuft, unterliegt das PHPSkript den folgenden vier Einschränkungen:

1), externe Befehle ausführen
2), beim Öffnen von Dateien gibt es einige Einschränkungen
3), Verbindung zur MySQL-Datenbank herstellen
4), HTTP-basierte Authentifizierung


Im abgesicherten Modus können nur externe Programme im spezifischen Verzeichnis ausgeführt werden und andere Programme

Anrufe an

werden abgelehnt. Dieses Verzeichnis kann in der php.ini-Datei mit der Anweisung „safe_mode_exec_dir“ verwendet werden,

oder beim Kompilieren von PHP die Option --with-exec-dir

zur Angabe, der Standardwert ist /usr/local/php /bin.

Wenn Sie einen externen Befehl aufrufen, der das Ergebnis ausgeben können soll (was bedeutet, dass das PHP-Skript korrekt ist), erhalten Sie als Ergebnis

aber es ist leer. Dann ist es sehr möglich, dass PHP im abgesicherten Modus läuft.

Wie gehe ich mit dieser Situation um?

Um externe Befehle in PHP aufzurufen, können Sie die folgenden drei Methoden verwenden:

PHP bietet 3 spezialisierte Funktionen zur externen Ausführung Befehle:

system(), exec(), passhru().
system( )
Prototyp: string system (string command [, int return_var])
system()-Funktion ist sehr ähnlich in andere Sprachen Ähnlich verhält es sich: Es führt den angegebenen Befehl aus, gibt die Ergebnisse aus und gibt sie zurück.

Der zweite Parameter ist optional. wird verwendet, um den Statuscode abzurufen, nachdem der Befehl ausgeführt wurde.

Beispiel:

Code kopierenCode Wie folgt:

system("/usr/local/bin/webalizer/webalizer");
?>

exec()
Prototyp: string exec (string command [ , string array [, int return_var] ] )

Die Funktion exec() ähnelt system(). Sie führt den angegebenen Befehl ebenfalls aus, gibt jedoch nicht das Ergebnis aus, sondern gibt zurück die letzte Zeile des Ergebnisses.

Obwohl nur die letzte Zeile des Befehlsergebnisses zurückgegeben wird, kann das vollständige Ergebnis mithilfe des zweiten Parameterarrays erhalten werden Methode ist: Die Ergebnisse werden Zeile für Zeile an das Ende des Arrays angehängt. Wenn das Array also nicht leer ist , verwenden Sie am besten

unset(), um es vor dem Aufruf zu löschen. Nur ​​wenn der zweite Parameter angegeben ist, kann der dritte Parameter verwendet werden, um den Statuscode der Befehlsausführung zu erhalten.

Beispiel:


Code kopieren

Code Wie folgt:exec("/bin/ls -l");exec("/bin/ls -l", $res ) ;

#$res sind Daten, jedes Element stellt eine Zeile des Ergebnisses dar

exec("/bin/ls -l", $res, $rc);#Der Wert von $rc ist der Befehl/ Der Statuscode von bin/ls -l. Im Erfolgsfall ist es normalerweise 0 🎜>




passthru()

Prototyp: void passhru (string command [, int return_var ])

passthru() ruft nur den Befehl auf und gibt keine Ergebnisse zurück Aber es gibt das laufende Ergebnis des Befehls direkt an den Standard aus

🎜>

auf dem Ausgabegerät.
Daher wird die Funktion passhru() oft verwendet, um pbmplus aufzurufen (ein Bildverarbeitungstool unter Unix

,

gibt den binären Originalbild-Stream aus )

so ein Programm. Es kann auch den Statuscode der Befehlsausführung abrufen.

Beispiel: Code kopieren

Code Wie folgt:

header("Content-type: image/gif");passthru("./ppmtogif hunte.ppm");

?>


Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden.

Das Obige stellt die Zusammenfassung 1 der Methode zum Aufrufen einer externen Shell durch PHP vor, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

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