Heim  >  Artikel  >  Backend-Entwicklung  >  Befehlszeilenausführung unter PHP

Befehlszeilenausführung unter PHP

不言
不言Original
2018-05-09 11:56:331981Durchsuche

Dieser Artikel stellt hauptsächlich die Befehlszeilenausführung unter PHP vor, die einen gewissen Referenzwert hat. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.

Das Folgende ist PHP Die von der Binärdatei (d. h. dem Programm php.exe ) bereitgestellten Befehlszeilenmodus-Optionsparameter können jederzeit über den Befehl PHP -h abgefragt werden.

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 &#39;bar&#39;
  -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

CLI SAPI Das Modul verfügt über die folgenden drei verschiedenen Möglichkeiten, um das gewünschte PHP Code:

Versuchen Sie in der Windows-Umgebung, doppelte Anführungszeichen zu verwenden, und in der Linux-Umgebung, versuchen Sie, einfache Anführungszeichen zu verwenden.

  1. 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. Das von Ihnen angegebene PHP-Skript muss nicht die Erweiterung .php haben.

  2. Führen Sie den

    PHP-Code direkt in der Befehlszeile aus.

    php -r "print_r(get_defined_constants());"
    Achten Sie bei der Verwendung dieser Methode bitte auf die Ersetzung von Shell-Variablen und die Verwendung von Anführungszeichen.


  1. Hinweis: Bitte lesen Sie das obige Beispiel sorgfältig durch, es gibt kein Startdatum Ausführen des Codes und der Endmarkierung! Mit den Parametern -r werden diese Tags nicht benötigt und das Hinzufügen führt zu einem Syntaxfehler.

  2. Stellen Sie 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, dynamisch

    PHP-Code zu generieren und diese Codes über die Befehlszeile auszuführen, wie im folgenden Beispiel gezeigt:

以上三种运行代码的方法不能同时使用。

和所有的外壳应用程序一样,PHP 的二进制文件(php.exe 文件)及其运行的 PHP 脚本能够接受一系列的参数。PHP 没有限制传送给脚本程序的参数的个数(外壳程序对命令行的字符数有限制,但您通常都不会超过该限制)。传递给您脚本的参数可在全局变量 $argv 中获取。该数组中下标为零的成员为脚本的名称(当 PHP 代码来自标准输入获直接用 -r 参数以命令行方式运行时,该名称为“-”)。另外,全局变量 $argc 存有 $argv 数组中成员变量的个数(而非传送给脚本程序的参数的个数)。

只要您传送给您脚本的参数不是以 - 符号开头,您就无需过多的注意什么。向您的脚本传送以 - 开头的参数会导致错误,因为 PHP 会认为应该由它自身来处理这些参数。您可以用参数列表分隔符 -- 来解决这个问题。在 PHP 解析完参数后,该符号后所有的参数将会被原样传送给您的脚本程序。

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

除此之外,我们还有另一个方法将 PHP 用于外壳脚本。您可以在写一个脚本,并在第一行以 #!/usr/bin/php 开头,在其后加上以 PHP 开始和结尾标记符包含的正常的 PHP 代码,然后为该文件设置正确的运行属性。该方法可以使得该文件能够像外壳脚本或 PERL 脚本一样被直接执行。

#!/usr/bin/php
<?php
    var_dump
($argv);
?>
<span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span>

假设改文件名为 test 并被放置在当前目录下,我们可以做如下操作:

$ 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, wird das Skript weiterhin normal ausgeführt, wenn Sie Parameter, die mit - beginnen, an das Skript übergeben.

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

Tabelle 23-3. Befehlszeilenoptionen

-w-f-v-c-a-d
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 ffbe95d20f3893062224282accb13e8f-Block von HTML-Tags generiert und kein HTML enthält Kopfzeile.


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


zeigt den Quellcode ohne Kommentare und Leerzeichen an.


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


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.

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

Mit diesem Parameter können Sie eine Platzierung

angeben Das Verzeichnis der php.ini-Datei, oder geben Sie direkt eine benutzerdefinierte INI-Datei an, deren Dateiname möglicherweise nicht php.ini ist. Zum Beispiel: $ php -c /custom/directory/ my_script.php $ php -c /custom/directory/custom-file.ini my_script.php

PHP interaktiv ausführen.

Verwenden Sie diesen Parameter, um den Wert der Variablen selbst in der Datei

php.ini festzulegen , seine Syntax Für: -d Konfigurationsdirektive[=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

Erweiterte Informationen für Debugger usw. generieren.

-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 ein Dateiname mit einem relativen Pfad angegeben wird, versucht PHP nur, die Erweiterung relativ zum aktuellen Verzeichnis zu laden.

-l

Dieser Parameter bietet eine praktische Möglichkeit, die Syntax des angegebenen PHP-Codes zu überprüfen. Bei Erfolg wird die Zeichenfolge Keine Syntaxfehler in 9a2c7908bec70c68979a32cfbab3ed40 erkannt in die Standardausgabe geschrieben und der Shell-Rückgabewert ist 0. Wenn dies fehlschlägt, werden Errors parsing 2334ac29606bf8a170583e4f7533b1f4 zusammen mit der internen Parser-Fehlermeldung 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.


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


-m

Mit diesem Parameter druckt PHP das integrierte aus und geladene 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 gibt das Ergebnis aus. Wenn PHP nicht ordnungsgemäß funktioniert, empfehlen wir Ihnen, den Befehl php -i auszuführen, um zu prüfen, ob vor der Informationstabelle oder an der entsprechenden Stelle 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 den PHP-Code in der Befehlszeile auszuführen. Sie müssen nicht die Start- und Endkennungen von PHP hinzufügen (f0f61052719267798d68cd772496ea9e >), andernfalls kommt es zu Fehlern bei der Syntaxanalyse.


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

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 immer noch die Parameterersetzung implementiert, obwohl doppelte Anführungszeichen " verwendet werden. Weil $foo ist nicht definiert. Nach dem Ersetzen wird seine Position zu einem Nullzeichen. Daher lautet der von PHP tatsächlich gelesene Code:

$ php -r " = get_defined_constants ();"

Der richtige Weg ist die Verwendung von einfachen Anführungszeichen '. In einer Zeichenfolge, die in einfache Anführungszeichen gesetzt wird, werden Variablen durch sh/bash nicht auf ihre ursprünglichen Werte zurückgesetzt.

$ php -r '$foo = get_defined_constants(); var_dump($foo);' array(370) { ["E_ERROR"]=> int(1) ["E_WARNING"]=> int(2) ["E_PARSE"]=> int(4) ["E_NOTICE"]=> int(8) ["E_CORE_ERROR"]=> [...]

Wenn Sie eine andere Shell als sh/bash verwenden, können andere Probleme auftreten. Bitte melden Sie aufgetretene Fehler oder senden Sie eine E-Mail an phpdoc@lists.php.net.

Sie können auch auf verschiedene Probleme stoßen, wenn Sie versuchen, die Umgebungsvariablen der Shell in das Pferd einzuführen oder Backslashes als Escape-Zeichen zu verwenden. Bitte seien Sie vorsichtig, wenn Sie diese verwenden!



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


-h Mit diesem Parameter können Sie die vollständige Liste der Befehlszeilenparameter und abrufen Eine kurze Beschreibung der Funktion dieser Parameter.


Der Befehlszeilenmodus von PHP ermöglicht die Ausführung von PHP-Skripten völlig unabhängig vom WEB-Server. Wenn Sie ein Unix-System verwenden, 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 zum Ausführen des Skripts verwenden muss. Unter der Windows-Plattform können Sie die Doppelklick-Attribute der Dateien php.exe und .php zuordnen oder eine Batchdatei schreiben, um das Skript mit PHP auszuführen. Die für Unix-Systeme hinzugefügte erste Codezeile hat keinen Einfluss auf die Ausführung des Skripts unter Windows, sodass Sie diese Methode auch zum Schreiben plattformübergreifender Skripte verwenden können. Das Folgende ist ein Beispiel für ein einfaches PHP-Befehlszeilenprogramm.


例子 23-1. 试图以命令行方式运行的 PHP 脚本(script.php)

#!/usr/bin/php9af8541c2854448f4292f22f564ba262This 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
Beispiel 23-1. PHP-Skript, das versucht, im Befehlszeilenmodus ausgeführt zu werden ( script.php)#!/usr/bin/php8deb48bca3d1183fcb518f448274ad98Dies ist ein Befehlszeilen-PHP-Skript mit einer Option: ac47345276dfe7859edf93b652836e00

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 ist ($argv[0]).

Im obigen Programm haben wir überprüft, ob die Anzahl der Parameter größer als 1 oder kleiner als 1 ist. Die unmittelbaren Parameter sind --help, -help, -h oder -?, wir drucken die Hilfeinformationen trotzdem dynamisch aus Der Name des Ausgabeskripts. 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 zu einem ausführbaren Skript machen und dann einfach script.php echothis oder script.php -h. Unter Windows kann man hierfür eine Batch-Datei schreiben:



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

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


Das obige ist der detaillierte Inhalt vonBefehlszeilenausführung unter 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