Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erklärung der PHP-Befehlszeilenausführung
<span style="font-size: 14px;">Usage: php [options] [-f] 28897b20adb25fbae118a3f80f538dec [args...]<br> php [options] -r ffbe95d20f3893062224282accb13e8f [args...]<br> php [options] [-- args...]<br> -s Display colour syntax highlighted source.<br> -w Display source with stripped comments and whitespace.<br> -f 28897b20adb25fbae118a3f80f538dec Parse 28897b20adb25fbae118a3f80f538dec.<br> -v Version number<br> -c 98953a78f52873edae60a617ec082494|28897b20adb25fbae118a3f80f538dec Look for php.ini file in this directory<br> -a Run interactively<br> -d foo[=bar] Define INI entry foo with value 'bar'<br> -e Generate extended information for debugger/profiler<br> -z 28897b20adb25fbae118a3f80f538dec Load Zend extension 28897b20adb25fbae118a3f80f538dec.<br> -l Syntax check only (lint)<br> -m Show compiled in modules<br> -i PHP information<br> -r ffbe95d20f3893062224282accb13e8f Run PHP ffbe95d20f3893062224282accb13e8f without using script tags e1cdf277302c20b8d8f1b523c1353fef<br> -h This help<br> <br> args... Arguments passed to script. Use -- args when first argument <br> starts with - or script is read from stdin<br></span> |
Das CLI-SAPI-Modul bietet die folgenden drei verschiedenen Möglichkeiten, den PHP-Code abzurufen, den Sie ausführen möchten:
In einem Windows Versuchen Sie in der Umgebung, doppelte Anführungszeichen zu verwenden, und versuchen Sie in der Linux-Umgebung, einfache Anführungszeichen zum Vervollständigen zu verwenden.
Lassen Sie PHP die angegebene Datei ausführen.
<span style="font-size: 14px;">php my_script.php <br/>php -f "my_script.php"<br/></span> |
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.
<span style="font-size: 14px;">php -r "print_r(get_defined_constants());"<br/></span> |
Achten Sie bei der Verwendung dieser Methode bitte 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.
Stellt den PHP-Code bereit, der über die Standardeingabe (stdin) ausgeführt werden muss.
Die obige Verwendung stellt uns sehr leistungsstarke Funktionen zur Verfügung, 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 | some_filter | php | 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.
<span style="font-size: 14px;"># 以下命令将不会运行 PHP 代码,而只显示 PHP 命令行模式的使用说明:<br/>$ php -r 'var_dump($argv);' -h<br/>Usage: php [options] [-f] <file> [args...]<br/>[...]<br/> <br/># 以下命令将会把“-h”参数传送给脚本程序,PHP 不会显示命令行模式的使用说明:<br/>$ php -r "var_dump($argv);" -- -h<br/>array(2) {<br/> [0]=><br/> string(1) "-"<br/> [1]=><br/> string(2) "-h"<br/>}<br/></span> |
除此之外,我们还有另一个方法将 PHP 用于外壳脚本。您可以在写一个脚本,并在第一行以 #!/usr/bin/php 开头,在其后加上以 PHP 开始和结尾标记符包含的正常的 PHP 代码,然后为该文件设置正确的运行属性。该方法可以使得该文件能够像外壳脚本或 PERL 脚本一样被直接执行。
#!/usr/bin/php efed5127f36b981c4500e1430988f65b |
假设改文件名为 test 并被放置在当前目录下,我们可以做如下操作:
<span style="font-size: 14px;">$ chmod 755 test<br/>$ ./test -h -- foo<br/>array(4) {<br/> [0]=><br/> string(6) "./test"<br/> [1]=><br/> string(2) "-h"<br/> [2]=><br/> string(2) "--"<br/> [3]=><br/> string(3) "foo"<br/>}<br/></span> |
Wie Sie sehen, wird das Skript weiterhin normal ausgeführt, wenn Sie Parameter, die mit - beginnen, an das Skript übergeben.
Tabelle 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 Vorgang lediglich einen HTML-Tag-Block von ffbe95d20f3893062224282accb13e8f generiert und keine HTML-Header enthält.
|
-w |
zeigt den Quellcode mit entfernten Kommentaren und Leerzeichen an.
|
-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 Standard Ausgabe. 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 ihn selbst in der php.ini festzulegen Datei Der Wert der Variablen, ihre 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“ # Durch die Übergabe eines leeren Wertteils wird die Konfigurationsanweisung auf „“ gesetzt. php -d max_execution_time= -r '$foo = ini_get("max_execution_time"); 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=macht keinen Sinn -r '$foo = ini_get("max_execution_time"); var_dump($foo);' 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 Syntaxprüfung für den angegebenen PHP-Code . Bei Erfolg wird die Zeichenfolge „Keine Syntaxfehler in 9a2c7908bec70c68979a32cfbab3ed40 erkannt“ in die Standardausgabe geschrieben und die Shell gibt den Wert 0 zurück. Wenn dies fehlschlägt, werden Fehler beim Parsen von 9a2c7908bec70c68979a32cfbab3ed40 zusammen mit internen Parser-Fehlermeldungen in die Standardausgabe geschrieben und der Shell-Rückgabewert wird auf 255 gesetzt. Dieser Parameter kann nicht auf schwerwiegende Fehler prüfen (z. B. undefinierte Funktionen). Wenn Sie schwerwiegende Fehler erkennen möchten, verwenden Sie bitte den Parameter -f.
|
-m |
Mit diesem Parameter druckt PHP die aus Eingebaut Und die geladenen PHP- und Zend-Module: $ php -m [PHP-Module] xml Tokenizer Standard Sitzung Posix pcre Überlast MySQL mbstring ctype [Zend Modules] |
-i | Dieser Befehlszeilenparameter ruft die Funktion phpinfo() auf und druckt sie aus Ergebnis. Wenn PHP nicht ordnungsgemäß funktioniert, empfehlen wir Ihnen, PHP auszuführen -i Befehl, um zu sehen, ob vor der Informationstabelle oder an der entsprechenden Stelle eine Fehlermeldung ausgegeben wird. 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 (0bab9f7133a5451fbf8ffe25972f7f99) nicht hinzufügen, da es sonst zu Fehlern bei der Syntaxanalyse kommt.
|
-h | 使用该参数,您可以得到完整的命令行参数的列表及这些参数作用的简单描述。 |
PHP 的命令行模式能使得 PHP 脚本能完全独立于 WEB 服务器单独运行。如果您使用 Unix 系统,您需要在您的 PHP 脚本的最前面加上一行特殊的代码,使得它能够被执行,这样系统就能知道用什么样的程序要运行该脚本。在 Windows 平台下您可以将 php.exe 和 .php 文件的双击属性相关联,您也可以编写一个批处理文件来用 PHP 执行脚本。为 Unix 系统增加的第一行代码不会影响该脚本在 Windows
下的运行,因此您也可以用该方法编写跨平台的脚本程序。以下是一个简单的PHP 命令行程序的范例。
例子 23-1. 试图以命令行方式运行的 PHP 脚本(script.php) #!/usr/bin/php82c68971946bf05db3b94f3b927e3c17This is a command line PHP script with one option. Usage: 6925e5facaaf6ccc7a8ba2dfb2f25106 5a07473c87748fb1bf73f23d45547ab8 5a07473c87748fb1bf73f23d45547ab8 can be some word you would like to print out. With the --help, -help, -h, or -? options, you can get this help.6d411e2bbda1d098e47f09cda7e0e03e |
Im obigen Skript verwenden wir die erste spezielle Codezeile, um anzugeben, dass die Datei von PHP ausgeführt werden soll. 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 prüfen wir, 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 Batchdatei schreiben:
Verwandte Empfehlungen:
Befehlszeilenausführung in PHP
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der PHP-Befehlszeilenausführung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!