CakeFest 2024: The Official CakePHP Conference

Kommandozeilenoptionen

Die Liste der Kommandozeilenoptionen, die das PHP-Binary bereitstellt, kann jederzeit abgerufen werden, indem PHP mit der Option -h gestartet wird:

Usage: php [options] [-f] <file> [--] [args...]
   php [options] -r <code> [--] [args...]
   php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
   php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
   php [options] -- [args...]
   php [options] -a

  -a               Run interactively
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse and execute <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -B <begin_code>  Run PHP <begin_code> before processing input lines
  -R <code>        Run PHP <code> for every input line
  -F <file>        Parse and execute <file> for every input line
  -E <end_code>    Run PHP <end_code> after processing all input lines
  -H               Hide any passed arguments from external tools.
  -S <addr>:<port> Run with built-in web server.
  -t <docroot>     Specify document root <docroot> for built-in web server.
  -s               Output HTML syntax highlighted source.
  -v               Version number
  -w               Output source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

  args...          Arguments passed to script. Use -- args when first argument
                   starts with - or script is read from stdin

  --ini            Show configuration file names

  --rf <name>      Show information about function <name>.
  --rc <name>      Show information about class <name>.
  --re <name>      Show information about extension <name>.
  --rz <name>      Show information about Zend extension <name>.
  --ri <name>      Show configuration for extension <name>.

Kommandozeilenoptionen
Option Langform Beschreibung
-a --interactive

Startet PHP im interaktiven Modus. Für weitere Informationen siehe die Dokumentation für den Interaktiven Modus.

-b --bindpath

Der Bind-Pfad für den externen FASTCGI-Servermodus (nur CGI).

-C --no-chdir

Nicht in das Verzeichnis des Skripts wechseln (nur CGI).

-q --no-header

Der Quiet-Modus. Unterdrücke die Ausgabe von HTTP-Headern (nur CGI).

-T --timing

Misst die Ausführungszeit des Skripts. Dies wird count mal durchgeführt (nur CGI).

-c --php-ini

Mit dieser Option kann man entweder ein Verzichnis angeben, in welchem nach der php.ini gesucht werden soll, oder man kann eine eigene INI-Datei angeben (diese muss nicht php.ini heissen). Zum Beispiel:

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

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

Wenn diese Option nicht angegeben wird, wird die php.ini-Datei an den vorgegebenen Orten gesucht.

-n --no-php-ini

php.ini komplett ignorieren.

-d --define

Diese Option erlaubt es Ihnen, einen eigenen Wert für eine beliebige in php.ini erlaubte Direktive zu setzen. Die Syntax ist:

-d configuration_directive[=value]

# Auslassen des Wertes setzt die Direktive auf "1"
$ php -d max_execution_time
      -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(1) "1"

# Übergeben eines leeren Wertes setzt die Direktive auf ""
php -d max_execution_time=
    -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(0) ""

# Die Direktive wird auf das gesetzt, was nach '=' kommt
$  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"); var_dump($foo);'
string(15) "doesntmakesense"

-e --profile-info

Erweiterte Informationen für Debugger/Profiler erstellen.

-f --file

Parst die angegebene Datei und führt sie aus. Das -f ist optional und kann weggelassen werden. Es genügt, nur den Dateinamen anzugeben.

-h und -? --help und --usage Gibt eine Liste von Kommandozeilenoptionen mit kurzen Beschreibungen ihrer Funktion aus.
-i --info Diese Kommandozeilenoption ruft phpinfo() auf und gibt das Ergebnis aus. Wenn PHP nicht korrekt funktioniert, ist es empfehlenswert, php -i zu verwenden und nachzusehen, ob etwa Fehlermeldungen vor oder statt der Informationstabellen ausgegeben werden. Beachten Sie, dass die Ausgabe bei Verwendung des CGI-Modus in HTML erfolgt und deswegen ziemlich umfangreich ist.
-l --syntax-check

Diese Option bietet eine bequehme Möglichkeit, nur eine Syntaxüberprüfung des angegebenen PHP-Codes durchzuführen. Bei Erfolg wird der Text No syntax errors detected in <filename> auf der Standardausgabe ausgegeben und der Rückgabewert ist 0. Bei einem Fehler wird der Text Errors parsing <filename> zusätzlich zur internen Parser-Fehlermeldung auf der Standardausgabe ausgegeben und der Rückgabewert auf -1 gesetzt.

Diese Option findet keine fatalen Fehler (wie undefinierte Funktionen). Verwenden Sie die Option -f, wenn sie auch auf diese überprüfen wollen.

Hinweis:

Diese Option funktioniert nicht zusammen mit -r.

-m --modules

Beispiel #1 Ausgabe der geladenen PHP- und Zend-Module

$ php -m
[PHP Modules]
xml
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

-r --run

Diese Option erlaubt die Ausführung von PHP Code direkt von der Kommandozeile. Die PHP-Tags <?php und ?> werden nicht benötigt und verursachen einen Parsefehler, wenn sie dennoch vorhanden sind.

Hinweis:

Bei der Verwendung dieser Option in PHP ist besondere Vorsicht geboten, dass es nicht zu Kollisionen mit dem Ersetzen von Kommandozeilenvariablen durch die Shell kommt.

Beispiel #2 Syntaxfehler beim Verwenden von doppelten Anführungszeichen

$ php -r "$foo = get_defined_constants();"
PHP Parse error:  syntax error, unexpected '=' in Command line code on line 1

Parse error: syntax error, unexpected '=' in Command line code on line 1

Das Problem hier ist, dass auch sh/bash Variablen ersetzt, wenn doppelte Anführungszeichen (") verwendet werden. Weil die Variable $foo wahrscheinlich nicht definiert ist, wird die Variable zu nichts aufgelöst. Der entstehende Code, welcher PHP übergeben wird, sieht so aus:

$ php -r " = get_defined_constants();"

Der richtige Weg wäre, einfache Anführungszeichen (') zu verwenden. Variablen in einfachen Anführungszeichen werden von sh/bash nicht ersetzt.

Beispiel #3 Verwendung einfacher Anführungszeichen, um ein Ersetzen der Variablen durch die Shell zu verhindern

$ 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 eine andere Kommandozeilenumgebung als sh/bash verwendet wird, könnten weitere Probleme auftreten. Gegebenenfalls kann unter » https://github.com/php/php-src/issues ein Bugreport erstellt werden. Man kann dennoch leicht in Schwierigkeiten geraten, wenn man versucht PHP- oder Shell-Variablen zu verwenden, oder Backslashes zum Maskieren verwendet. Sie wurden gewarnt!

Hinweis:

-r ist in der CLI SAPI verfügbar, nicht jedoch in der CGI-SAPI.

Hinweis:

Diese Option ist für sehr einfachen Code gedacht, weshalb einige Direktiven wie etwa auto_prepend_file und auto_append_file in diesem Modus ignoriert werden.

-B --process-begin

PHP-Code, der ausgeführt werden soll, bevor stdin ausgewertet wird.

-R --process-code

PHP-Code, der für jede Eingabezeile ausgeführt werden soll.

Es gibt zwei spezielle Variablen in diesem Modus: $argn und $argi. $argn enthält die Zeile, die PHP gerade verarbeitet und $argi enthält die Zeilennummer.

-F --process-file

PHP-Datei, die für jede Eingabezeile ausgeführt werden soll.

-E --process-end

PHP-Code, der nach der Verarbeitung der Eingabe ausgeführt werden soll.

Beispiel #4 Nutzung der Optionen -B, -R und -E, um die Anzahl der Zeilen in einem Projekt zu zählen.

$ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Zeilen insgesamt: $l\n";'
Zeilen insgesamt: 37328

-S --server

Startet den eingebauten Webserver.

-t --docroot Gibt den Document-Root (Wurzelverzeichnis der Dokumente) für den eingebauten Webserver an.
-s --syntax-highlight und --syntax-highlighting

Den Quelltext mit farblich hervorgehobener Syntax anzeigen.

Diese Option verwendet den internen Mechanismus zum Parsen von Dateien, um eine HTML-Version mit Syntax-Highlighting auf die Standardausgabe zu schreiben. Beachten Sie, dass sie nur einen Block mit den HTML-Tags <code> [...] </code> erzeugt, jedoch keine HTML-Header.

Hinweis:

Diese Option funktioniert nicht zusammen mit -r.

-v --version

Beispiel #5 Nutzung von -v, um den SAPI-Namen, sowie die PHP- und Zend-Version zu ermitteln

$ php -v
PHP 5.3.1 (cli) (built: Dec 11 2009 19:55:07)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

-w --strip

Den Quelltext ohne Kommentare und Leerzeichen anzeigen.

Hinweis:

Diese Option funktioniert nicht zusammen mit -r.

-z --zend-extension

Eine Zend-Erweiterung laden. Wenn nur ein Dateiname angegeben wird, versucht PHP, die Erweiterung aus dem momentanen Standard-Bibliotheken-Pfad auf Ihrem System zu laden (auf Linux-Systemen normalerweise in /etc/ld.so.conf angegeben). Wenn ein Dateiname mit absoluter Pfadinformation übergeben wird, wird der Bibliotheken-Pfad des Systems nicht verwendet. Ein relativer Dateiname mit Pfadinformationen wird PHP veranlassen, zu versuchen, die Erweiterung in einem Pfad relativ zum aktuellen Verzeichnis zu laden.

  --ini

Zeigt die Namen der Konfigurationsdateien und die durchsuchten Verzeichnisse.

Beispiel #6 --ini-Beispiel

$ php --ini
Configuration File (php.ini) Path: /usr/dev/php/5.2/lib
Loaded Configuration File:         /usr/dev/php/5.2/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

--rf --rfunction

Zeigt Informationen über die angegebene Funktion oder Klassenmethode (z. B. Anzahl und Namen der Parameter).

Diese Option ist nur verfügbar, wenn PHP mit Reflection-Unterstützung kompiliert wurde.

Beispiel #7 Einfache --rf-Nutzung

$ php --rf var_dump
Function [ <internal> public function var_dump ] {

  - Parameters [2] {
    Parameter #0 [ <required> $var ]
    Parameter #1 [ <optional> $... ]
  }
}

--rc --rclass

Zeigt Inforationen über die angegebene Klasse (Liste der Konstanten, Eigenschaften und Methoden).

Diese Option ist nur verfügbar, wenn PHP mit Reflection-Unterstützung kompiliert wurde.

Beispiel #8 --rc-Beispiel

$ php --rc Directory
Class [ <internal:standard> class Directory ] {

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [0] {
  }

  - Methods [3] {
    Method [ <internal> public method close ] {
    }

    Method [ <internal> public method rewind ] {
    }

    Method [ <internal> public method read ] {
    }
  }
}

--re --rextension

Zeigt Informationen über die angegebene Erweiterung (Liste der php.ini-Optionen, definierte Funktionen, Konstanten und Klassen).

Diese Option ist nur verfügbar, wenn PHP mit Reflection-Unterstützung kompiliert wurde.

Beispiel #9 --re-Beispiel

$ php --re json
Extension [ <persistent> extension #19 json version 1.2.1 ] {

  - Functions {
    Function [ <internal> function json_encode ] {
    }
    Function [ <internal> function json_decode ] {
    }
  }
}

--rz --rzendextension

Zeigt Konfiguration der angegebenen Zend-Erweiterung an (entspricht der von phpinfo() zurückgegebenen Information).

--ri --rextinfo

Zeigt die Konfiguration der angegebenen Erweiterung an (entspricht der von phpinfo() zurückgegebenen Information). Die Konfiguration des Sprachkerns kann über den speziellen Erweiterungsnamen "main" ermittelt werden.

Beispiel #10 --ri-Beispiel

$ php --ri date

date

date/time support => enabled
"Olson" Timezone Database Version => 2009.20
Timezone Database => internal
Default timezone => Europe/Oslo

Directive => Local Value => Master Value
date.timezone => Europe/Oslo => Europe/Oslo
date.default_latitude => 59.930972 => 59.930972
date.default_longitude => 10.776699 => 10.776699
date.sunset_zenith => 90.583333 => 90.583333
date.sunrise_zenith => 90.583333 => 90.583333

Hinweis:

Die Optionen -rBRFEH, --ini und --r[fcezi] sind nur für CLI verfügbar.

add a note

User Contributed Notes 3 notes

up
1
dch
4 months ago
If you would like to see the PHP's current configuration using the -i switch from the shell command line with php.ini specified, then the order of arguments is important. Putting -i after -c gives the intended result.

Info is printed out for the default php.ini (cli)
$ php -i --php-ini /etc/php/7.4/fpm/php.ini | grep -i "loaded conf"
Loaded Configuration File => /etc/php/7.4/cli/php.ini

Info is printed out for the desired php.ini (fpm)
$ php --php-ini /etc/php/7.4/fpm/php.ini -i | grep -i "loaded conf"
Loaded Configuration File => /etc/php/7.4/fpm/php.ini
up
-1
Ap.Muthu
9 years ago
If we start the php's built in webserver (PHP v5.4 onwards) with:
php -S localhost:8000 -t htdocs
and have an image file picture.jpg in it
and reference it in a html page with:
<img src="picture.jpg">
the rendered page will not show the image and the html code behind the image is:
http://localhost:8000/index.php/picture.jpg

If however, the html code in the page is:
<img src="/picture.jpg">
the picture displays correctly.

Hence relative addressing is broken in PHP 5.4.33 Win32 VC9 build.
up
-21
yanshinian at yeah dot net
5 years ago
get ./configure

php -i |grep configure

Configure Command => './configure' '--prefix=/app/webserver/php5' '--with-config-file-path=/app/webserver/php5/etc' '--with-config-file-scan-dir=/app/webserver/php5/etc/php.d' '--enable-inline-optimization' '--disable-debug' '--disable-rpath' '--enable-shared' '--enable-opcache' '--enable-fpm' '--with-fpm-user=appuser' '--with-fpm-group=appuser' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-gettext' '--enable-mbstring' '--enable-exif' '--enable-ftp' '--enable-wddx' '--with-iconv' '--with-mcrypt' '--with-mhash' '--with-openssl' '--enable-bcmath' '--enable-soap' '--with-libxml-dir' '--enable-pcntl' '--enable-shmop' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-sockets' '--enable-gd-native-ttf' '--enable-gd-jis-conv' '--enable-calendar' '--with-curl=/app/webserver/curl' '--with-zlib' '--enable-zip' '--with-bz2' '--with-readline' '--with-gd' '--with-freetype-dir' '--with-png-dir' '--with-jpeg-dir' '--with-vpx-dir' '--with-xpm-dir' '--with-t1lib' '--disable-json'
To Top