Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für die Ausführung einer PHP-Befehlszeile

Beispiel für die Ausführung einer PHP-Befehlszeile

小云云
小云云Original
2018-03-14 11:21:263596Durchsuche

Dieser Artikel teilt Ihnen hauptsächlich die folgenden Befehlszeilenmodus-Optionsparameter mit, die von der PHP-Binärdatei (d. h. dem Programm php.exe) bereitgestellt werden. Sie können diese Parameter jederzeit über den PHP-Befehl -h abfragen.

Usage: php [options] [-f] <file> [args...]
      php [options] -r <code> [args...]
      php [options] [-- args...]
 -s               Display colour syntax highlighted source.
 -w               Display source with stripped comments and whitespace.
 -f <file>        Parse <file>.
 -v               Version number
 -c <path>|<file> Look for php.ini file in this directory
 -a               Run interactively
 -d foo[=bar]     Define INI entry foo with value 'bar'
 -e               Generate extended information for debugger/profiler
 -z <file>        Load Zend extension <file>.
 -l               Syntax check only (lint)
 -m               Show compiled in modules
 -i               PHP information
 -r <code>        Run PHP <code> without using script tags <?..?>
 -h               This help
 args...          Arguments passed to script. Use -- args when first argument 
                  starts with - or script is read from stdin

Das CLI-SAPI-Modul verfügt über die folgenden drei verschiedenen Methoden, um den PHP-Code zu erhalten, den Sie ausführen möchten:

Versuchen Sie in der Windows-Umgebung, doppelte Anführungszeichen zu verwenden, und in Linux Versuchen Sie, in einer Umgebung doppelte Anführungszeichen zu verwenden. Verwenden Sie zum Vervollständigen einfache Anführungszeichen.

Lassen Sie PHP die angegebene Datei ausführen.

php my_script.php 
php -f  "my_script.php"

Beide der oben genannten Methoden (mit oder ohne den Parameter -f) können die angegebene Datei my_script.php ausführen. Sie können eine beliebige Datei zum Ausführen auswählen. Die von Ihnen angegebenen PHP-Skripte müssen keine .php-Erweiterung haben. Sie können einen beliebigen Dateinamen und eine beliebige Erweiterung haben.

Führen Sie PHP-Code direkt über die Befehlszeile aus.

php -r "print_r(get_defined_constants());"

Bitte achten Sie bei der Verwendung dieser Methode auf die Ersetzung von Shell-Variablen und die Verwendung von Anführungszeichen.

Hinweis: Bitte lesen Sie das obige Beispiel sorgfältig durch. Beim Ausführen des Codes gibt es keine Start- und Endmarkierungen! Mit dem Parameter -r sind diese Markierungen unnötig und führen zu Syntaxfehlern.

Stellen Sie den PHP-Code bereit, der über die Standardeingabe (stdin) ausgeführt werden muss.

Die obige Verwendung bietet uns sehr leistungsstarke Funktionen, die es uns ermöglichen, PHP-Code dynamisch zu generieren und diese Codes über die Befehlszeile auszuführen, wie im folgenden Beispiel gezeigt:

$ some_application | |. sort -u >final_output.txt

Die oben genannten drei Methoden zum Ausführen von Code können nicht gleichzeitig verwendet werden.

Wie alle Shell-Anwendungen können die PHP-Binärdatei (php.exe-Datei) und das von ihr ausgeführte PHP-Skript eine Reihe von Parametern akzeptieren. PHP hat keine Begrenzung hinsichtlich der Anzahl der Argumente, die an ein Skript übergeben werden (die Shell hat eine Begrenzung hinsichtlich der Anzahl der Zeichen in der Befehlszeile, aber normalerweise werden Sie diese Begrenzung nicht überschreiten). Die an Ihr Skript übergebenen Argumente sind in der globalen Variablen $argv verfügbar. Das nullindizierte Mitglied dieses Arrays ist der Name des Skripts (wenn der PHP-Code von der Standardeingabe stammt und direkt über die Befehlszeile mit dem Parameter -r ausgeführt wird, lautet der Name „-“). Darüber hinaus speichert die globale Variable $argc die Anzahl der Mitgliedsvariablen im $argv-Array (nicht die Anzahl der an das Skriptprogramm übergebenen Parameter).

Solange die Parameter, die Sie an Ihr Skript übergeben, nicht mit einem - Symbol beginnen, müssen Sie auf nichts allzu viel achten. Die Übergabe von Parametern, die mit - beginnen, an Ihr Skript führt zu einem Fehler, da PHP davon ausgeht, dass es diese Parameter selbst verarbeiten sollte. Sie können das Parameterlistentrennzeichen verwenden, um dieses Problem zu lösen. Nachdem PHP die Parameter analysiert hat, werden alle Parameter nach diesem Symbol unverändert an Ihr Skript übergeben.

# 以下命令将不会运行 PHP 代码,而只显示 PHP 命令行模式的使用说明:
$ php -r 'var_dump($argv);' -h
Usage: php [options] [-f] <file> [args...]
[...]
 
# 以下命令将会把“-h”参数传送给脚本程序,PHP 不会显示命令行模式的使用说明:
$ php -r "var_dump($argv);" -- -h
array(2) {
  [0]=>
  string(1) "-"
  [1]=>
  string(2) "-h"
}

Darüber hinaus haben wir eine weitere Möglichkeit, PHP für Shell-Skripte zu verwenden. Sie können ein Skript schreiben und die erste Zeile mit #!/usr/bin/php beginnen, gefolgt von normalem PHP-Code, der von PHP-Start- und End-Tags umgeben ist, und dann die korrekte Ausführung für die Dateieigenschaft einrichten. Diese Methode ermöglicht die direkte Ausführung der Datei wie ein Shell-Skript oder PERL-Skript.

#!/usr/bin/php
<?php
    var_dump($argv);
?>

Angenommen, die Datei wird in test umbenannt und im aktuellen Verzeichnis abgelegt, können wir Folgendes tun:

$ chmod 755 test
$ ./test -h -- foo
array(4) {
  [0]=>
  string(6) "./test"
  [1]=>
  string(2) "-h"
  [2]=>
  string(2) "--"
  [3]=>
  string(3) "foo"
}

Wie Sie sehen können, geben Sie das Skript ein, nachdem Sie es übergeben haben Parameter, die mit - beginnen, wird das Skript weiterhin normal ausgeführt.

---------------- ------ ----------------------------------Befehlsoptionen-------- ------ -------------------------------------------- -

Formular 23-3. Befehlszeilenoptionen

Optionsname

Beschreibung

-s

Quelldateien mit Syntaxhervorhebung anzeigen .

Dieser Parameter verwendet den integrierten Mechanismus, um die Datei zu analysieren, eine HTML-hervorgehobene Version davon zu generieren und das Ergebnis in die Standardausgabe zu schreiben. Bitte beachten Sie, dass dieser Prozess lediglich einen HTML-Tag-Block von generiert und keine HTML-Header enthält.

Hinweis: Diese Option kann nicht zusammen mit dem Parameter -r verwendet werden.

-w

Zeigt den Quellcode ohne Kommentare und Leerzeichen an.

Hinweis: Diese Option kann nicht zusammen mit dem Parameter -r verwendet werden.

-f

Parse den angegebenen Dateinamen und führe ihn aus. Dieser Parameter ist optional und kann weggelassen werden. Es muss lediglich der Name der Datei angegeben werden, die ausgeführt werden soll.

-v

Schreiben Sie die Versionsinformationen von PHP, PHP SAPI und Zend in die Standardausgabe. Zum Beispiel:

$ php -v PHP 4.3.0-dev (cli), Copyright (c) 1997-2002 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies

-c

Mit diesem Parameter können Sie ein Verzeichnis angeben, in dem die php.ini-Datei abgelegt wird, oder direkt eine benutzerdefinierte INI-Datei angeben, deren Dateiname nicht php.ini sein muss. Zum Beispiel:

$ php -c /custom/directory/ my_script.php $ php -c /custom/directory/custom-file.ini my_script.php

-a

PHP interaktiv ausführen.

-d

Verwenden Sie diesen Parameter, um den Wert der Variablen in der Datei php.ini festzulegen. Die Syntax lautet:

-d Konfigurationsrichtlinie [ =Wert]

Beispiel:

# Durch Weglassen des Wertteils wird die angegebene Konfigurationsanweisung auf „1“ gesetzt $ php -d max_execution_time -r '$foo = ini_get("max_execution_time") ; var_dump($foo);' string(1) "1" # Die Übergabe eines leeren Wertteils setzt die Konfigurationsanweisung auf "" php -d max_execution_time= -r '$foo = ini_get("var_dump($). foo );' string(0) "" # Die Konfigurationsanweisung wird auf alles gesetzt, was nach dem '='-Zeichen übergeben wird $ php -d max_execution_time=20 -r '$foo = ini_get("max_execution_time"); var_dump($foo ) ;' string(2) "20" $ php -d max_execution_time=doesntmakesense -r '$foo = ini_get("max_execution_time");' string(15) "doesntmakesense"

- e

Generieren Sie erweiterte Informationen für Debugger usw.

-z

Zend-Erweiterungsbibliothek laden. Wenn nur ein Dateiname angegeben wird, versucht PHP, die Erweiterungsbibliothek aus dem Standardpfad der Erweiterungsbibliothek Ihres Systems zu laden (auf Linux-Systemen wird dieser Pfad normalerweise durch /etc/ld.so.conf angegeben). Wenn Sie einen Dateinamen mit einem absoluten Pfad angeben, wird der Standardpfad des Systems zur Erweiterungsbibliothek nicht verwendet. Wenn Sie einen Dateinamen mit einem relativen Pfad angeben, versucht PHP nur, die Erweiterung relativ zum aktuellen Verzeichnis zu laden.

-l

Dieser Parameter bietet eine praktische Möglichkeit zur Syntaxprüfung des angegebenen PHP-Codes. Bei Erfolg wird die Zeichenfolge „Keine Syntaxfehler in erkannt“ in die Standardausgabe geschrieben und die Shell gibt den Wert 0 zurück. Wenn dies fehlschlägt, werden Fehler beim Parsen von zusammen mit internen Parser-Fehlermeldungen in die Standardausgabe geschrieben und der Shell-Rückgabewert wird auf 255 gesetzt.

Dieser Parameter erkennt keine schwerwiegenden Fehler (z. B. undefinierte Funktionen). Wenn Sie schwerwiegende Fehler erkennen möchten, verwenden Sie bitte den Parameter -f.

Hinweis: Dieser Parameter kann nicht mit -r verwendet werden.

-m

Mit diesem Parameter druckt PHP die integrierten und geladenen PHP- und Zend-Module aus:

$ php -m [ PHP Modules] XML Tokenizer Standard Session Posix PCRE Overload MySQL MBString Ctype [Zend Modules]

-i Dieser Befehlszeilenparameter ruft die Funktion phpinfo() auf und gibt das Ergebnis aus. Wenn PHP nicht ordnungsgemäß funktioniert, empfehlen wir Ihnen, den Befehl php -i auszuführen, um zu prüfen, ob vor oder an der entsprechenden Stelle der Informationstabelle Fehlermeldungen ausgegeben werden. Bitte beachten Sie, dass der Ausgabeinhalt im HTML-Format vorliegt und daher die Ausgabeinformationen größer sind.

-r

Verwenden Sie diesen Parameter, um PHP-Code in der Befehlszeile auszuführen. Sie müssen die PHP-Start- und Endkennungen () nicht hinzufügen, da es sonst zu Fehlern bei der Syntaxanalyse kommt.

Hinweis: Bei der Verwendung dieser PHP-Form sollte besonders darauf geachtet werden, Konflikte mit Befehlszeilenparameterersetzungen zu vermeiden, die von der Shell-Umgebung durchgeführt werden.

Beispiel für Syntax-Parsing-Fehler

$ php -r "$foo = get_defined_constants();" Befehlszeilencode(1): Parse-Fehler – Parse-Fehler, unerwartetes '='

Das Problem hierbei ist, dass sh/bash auch bei Verwendung von doppelten Anführungszeichen „ immer noch die Parameterersetzung implementiert. Da $foo nicht definiert ist, wird seine Position nach dem Ersetzen zu einem Nullzeichen, sodass es zur Laufzeit tatsächlich von PHP gelesen wird Der verwendete Code lautet:

$ php -r " = get_defined_constants();"

Die richtige Methode besteht darin, einfache Anführungszeichen zu verwenden. In einer Zeichenfolge, die in einfache Anführungszeichen gesetzt wird, werden keine Variablen verwendet . Auf den ursprünglichen Wert zurückgesetzt durch sh/bash

$ php -r '$foo = var_dump($foo);' 1) ["E_WARNING"]=> int(2) ["E_PARSE"]=> int(4) ["E_NOTICE"]=> ]

Wenn Sie eine andere Shell als sh/bash verwenden, können Sie auf andere Probleme stoßen oder eine E-Mail an phpdoc@lists.php.net senden Es treten verschiedene Probleme auf, wenn Sie versuchen, die Umgebungsvariablen der Shell in das Pferd einzuführen oder Backslashes als Escapezeichen zu verwenden.

Hinweis: - r Gültig in CLI SAPI, ungültig in CGI SAPI 🎜>

-h Mit diesem Parameter erhalten Sie eine vollständige Liste der Befehlszeilenparameter und eine kurze Beschreibung der Funktionen dieser Parameter 🎜>

Der Befehlszeilenmodus von PHP ermöglicht PHP-Skripte Um völlig unabhängig vom WEB-Server zu laufen, müssen Sie am Anfang Ihres PHP-Skripts eine spezielle Codezeile hinzufügen, damit es ausgeführt werden kann, damit das System weiß, welches Programm es verwenden soll Führen Sie das Skript aus. Auf Windows-Plattformen können Sie die Doppelklick-Attribute von php.exe- und .php-Dateien verknüpfen oder eine Batch-Datei schreiben, um das Skript mit PHP auszuführen hat keinen Einfluss auf die Ausführung des Skripts unter Windows, sodass Sie diese Methode auch zum Schreiben plattformübergreifender Skripts verwenden können. Das Folgende ist ein Beispiel für ein einfaches PHP-Befehlszeilenprogramm.

Beispiel 23-1. PHP-Skript (script.php), das versucht, über die Befehlszeile ausgeführt zu werden

#!/usr/bin/phpDies ist ein Befehlszeilen-PHP-Skript mit einer Option. Verwendung: kann ein Wort sein, das Sie ausdrucken möchten. Sie können diese Hilfe erhalten.

Im obigen Skript verwenden wir die erste Zeile speziellen Codes, um anzugeben, dass die Datei sein soll von PHP zur Ausführung geschrieben. Wir verwenden hier die CLI-Version, daher werden keine HTTP-Header ausgegeben. Wenn Sie Befehlszeilenanwendungen in PHP schreiben, können Sie zwei Parameter verwenden: $argc und $argv. Der Wert des vorherigen ist eine ganze Zahl, die um eins größer ist als die Anzahl der Parameter (der Name des ausgeführten Skripts wird ebenfalls als Parameter betrachtet). Das zweite enthält ein Array von Parametern, dessen erstes Element der Name des Skripts ist und dessen Index die Zahl 0 ($argv[0]) ist.

Im obigen Programm haben wir überprüft, ob die Anzahl der Parameter größer als 1 oder kleiner als 1 ist. Selbst wenn der Parameter --help, -help, -h oder -? ist, drucken wir dennoch die Hilfeinformationen aus und geben gleichzeitig dynamisch den Namen des Skripts aus. Wenn weitere Parameter empfangen werden, zeigen wir diese ebenfalls an.

Wenn Sie das obige Skript unter Unix ausführen möchten, müssen Sie es ausführbar machen und dann einfach script.php echothis oder script.php -h ausführen. Unter Windows können Sie hierfür eine Batch-Datei schreiben:

@c:phpcliphp.exe script.php %1 %2 %3 %4

Verwandte Empfehlungen:

Detaillierte Erklärung der PHP-Befehlszeilenausführung

PHP ruft die Linux-Befehlszeile auf, um den Dateikomprimierungsbefehl auszuführen_PHP-Tutorial

Zur PHP-Befehlszeilenausführung

Das obige ist der detaillierte Inhalt vonBeispiel für die Ausführung einer PHP-Befehlszeile. 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