## Options de ligne de commande

La liste des options de ligne de commande fournies par PHP est disponible à n'importe quel moment en exécutant PHP avec l'option -h :

    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>.

Options de ligne de commande
Option | Option longue | Description
--- | --- | ---
-a | --interactive | Lance PHP de façon interactive. Pour plus d'informations, reportez-vous à la documentation concernant le shell intéractif.
-b | --bindpath | Lie le chemin pour les externes, en mode serveur FASTCGI (CGI uniquement).
-C | --no-chdir | Ne pas aller dans le dossier du script (CGI uniquement).
-q | --no-header | Mode silencieux. Supprime la sortie des en-têtes HTTP (CGI uniquement).
-T | --timing | Mesure le temps d'exécution du script, répété count fois (CGI uniquement).
-c | --php-ini | Spécifie le nom du dossier dans lequel se trouve le fichier php.ini, ou encore spécifie un fichier de configuration (`INI`) directement (qui ne s'appelle pas obligatoirement php.ini) :
    $ php -c /custom/directory/ mon_script.php

    $ php -c /custom/directory/custom-file.ini mon_script.php
Si cette option n'est pas spécifiée, php.ini est recherché dans les endroits par défaut.
-n | --no-php-ini | Ignore totalement php.ini.
-d | --define | Définit une valeur personnalisée pour n'importe quelle directive de configuration du fichier php.ini. La syntaxe est :
     -d configuration_directive[=value]
Exemple #1 Example of using `-d` to set an INI setting
    # L'omission de la valeur conduit à donner la valeur de "1"
    $ php -d max_execution_time
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(1) "1"

    # Passer une valeur vide conduit à donner la valeur de ""
    php -d max_execution_time=
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(0) ""

    # La directive de configuration sera n'importe quelle valeur passée après le caractère '='
    $  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 | Génère des informations étendues pour le profilage et le débogage.
-f | --file | Analyse et exécute le fichier spécifié. L'option -f est facultative, et peut être omise. Le seul nom du fichier est suffisant.
-h et -? | --help et --usage | Affiche des informations sur la liste courante des options de la ligne de commande, ainsi que leur description.
-i | --info | Appelle la fonction phpinfo(), et affiche le résultat. Si PHP ne fonctionne pas correctement, il est recommandé d'utiliser la commande php -i et de voir s'il n'y a pas d'erreurs affichées avant ou après la table d'information. N'oubliez pas que le résultat de cette option, si vous utilisez le mode CGI, est au format HTML, et donc de taille conséquente.
-l | --syntax-check | Vérifie la syntaxe mais n'exécute pas le code PHP donné. L'entrée provenant de l'entrée standard sera traitée si aucun nom de fichier n'est spécifié, sinon chaque fichier spécifié sera vérifié. En cas de réussite, le message `No syntax errors detected in <filename>` (Littéralement, aucune erreur de syntaxe n'a été détectée dans le fichier) est affiché sur la sortie standard. En cas d'erreur, le message `Errors parsing <filename>` (Littéralement, erreur d'analyse dans le fichier filename) est affiché, en plus des messages d'erreurs détectés par l'analyseur lui-même. Si des erreurs sont trouvées dans les fichiers spécifiés (ou l'entrée standard), le code de retour du shell est défini à `-1`, sinon le code de retour du shell est défini à `0`. Cette option ne détecte pas les erreurs fatales (par exemple les fonctions non définies) qui nécessitent l'exécution du code. Note: Avant PHP 8.3.0, il n'était possible de spécifier qu'un seul nom de fichier à vérifier. Note: Cette option ne fonctionne pas avec l'option -r.
-m | --modules | Exemple #2 Affichage des modules internes (et chargés) de PHP et Zend
    $ php -m
    [PHP Modules]
    xml
    tokenizer
    standard
    session
    posix
    pcre
    overload
    mysql
    mbstring
    ctype

    [Zend Modules]
> -r | --run | Permet l'exécution de PHP directement dans la ligne de commande. Les balises de PHP (`<?php` et `?>`) ne sont pas nécessaires, et causeront une erreur d'analyse si elles sont présentes. Note: Une attention toute particulière doit être portée lors de l'utilisation de cette option de PHP, pour qu'il n'y ait pas de collision avec les substitutions de variables en ligne de commande, réalisées par le shell. Exemple #3 Erreur de syntaxe lors de l'utilisation de doubles guillemets
>     $ 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
> Le problème ici est que le shell (sh/bash) effectue une substitution de variables, même avec les guillemets doubles `"`. Puisque la variable $foo n'est probablement pas définie dans le shell, elle est remplacée par rien, ce qui fait que le code passé à PHP pour l'exécution est :
>     $ php -r " = get_defined_constants();"
> La solution de ce problème est d'utiliser les guillemets simples `'`. Les variables de ces chaînes ne seront pas substituées par leurs valeurs par le shell. Exemple #4 Utilisation de guillemets simples pour éviter une substitution par le shell
>     $ 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"]=>
>       [...]
Si un shell différent de sh/bash est utilisé, d'autres problèmes pourront être rencontrés - si approprié, un rapport de bogues pourra être ouvert via à » https://github.com/php/php-src/issues. Il est toujours très facile d'avoir des problèmes lorsque vous essayez d'inclure des variables shell dans le code, ou d'utiliser les antislashs pour la protection. Vous aurez été prévenu ! Note: -r est disponible avec le CLI SAPI mais pas avec le SAPI CGI. Note: Cette option est seulement utilisée pour des choses simples. Ainsi, quelques directives de configuration (par exemple auto_prepend_file et auto_append_file) sont ignorées dans ce mode.
-B | --process-begin | Code PHP à exécuter avant le traitement de stdin.
-R | --process-code | Code PHP à exécuter pour chaque ligne en entrée. Il y a deux variables spéciales de disponibles dans ce mode : $argn et $argi. $argn doit contenir la ligne PHP traitée à ce moment donné, tandis que $argi doit contenir le numéro de la ligne.
-F | --process-file | Fichier PHP à exécuter pour chaque ligne en entrée.
-E | --process-end | Code PHP à exécuter après avoir effectué l'entrée. Exemple #5 Exemple d'utilisation des options -B, -R et -E pour compter le nombre de lignes d'un projet.
    $ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Total Lines: $l\n";'
    Total Lines: 37328
-S | --server | Démarre le serveur web interne. Disponible depuis 5.4.0.
-t | --docroot | Spécifie la racine des documents pour le serveur web interne.
-s | --syntax-highlight et --syntax-highlighting | Affiche le code avec la colorisation syntaxique. Cette option utilise le mécanisme interne pour analyser le fichier, et écrire au format HTML une version colorisée du code source. Notez que cette option ne fait que générer un bloc HTML, avec les balises HTML `<code> [...] </code>`, sans en-têtes HTML. Note: Cette option ne fonctionne pas avec l'option -r.
-v | --version | Exemple #6 Utilisation de l'option -v pour récupérer le nom du SAPI ainsi que la version de PHP et de Zend
    $ 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 | Affiche la source sans les commentaires ni les espaces. Note: Cette option ne fonctionne pas avec l'option -r.
-z | --zend-extension | Charge une extension Zend. Si et seulement si un fichier est fourni, PHP essaie de charger cette extension dans le dossier courant par défaut des bibliothèques sur votre système (généralement spécifié avec /etc/ld.so.conf sous Linux par exemple). Passer un nom de fichier avec le chemin complet fera que PHP utilisera ce fichier, sans recherche dans les dossiers classiques. Un chemin de dossier relatif, incluant les informations sur le dossier, indiquera à PHP qu'il doit chercher les extensions uniquement dans ce dossier.
| --ini | Affiche les noms des fichiers de configuration et des dossiers analysés. Exemple #7 Exemple avec `--ini`
    $ 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 | Affiche des informations sur la fonction donnée ou la méthode d'une classe (i.e. nombre et nom des paramètres). Cette option n'est disponible que si PHP a été compilé avec le support Reflection. Exemple #8 Exemple avec `--rf`
    $ php --rf var_dump
    Function [ <internal> public function var_dump ] {

      - Parameters [2] {
        Parameter #0 [ <required> $var ]
        Parameter #1 [ <optional> $... ]
      }
    }
--rc | --rclass | Affiche des informations sur la classe donnée (liste des constantes, propriétés et méthodes). Cette option n'est disponible que si PHP a été compilé avec le support Reflection. Exemple #9 Exemple avec `--rc`
    $ 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 | Affiche les informations sur l'extension donnée (liste les options du php.ini, les fonctions définies, les constantes et les classes). Cette option n'est disponible que si PHP a été compilé avec le support Reflection. Exemple #10 Exemple avec `--re`
    $ 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 | Affiche les informations de configuration pour l'extension Zend fourni (les mêmes informations que celles retournées par la fonction phpinfo()).
--ri | --rextinfo | Affiche les informations de configuration pour l'extension donnée (les mêmes informations retournées par la fonction phpinfo()). Les informations de configurations internes sont disponibles en utilisant le nom d'extension "main" ou "core". Exemple #11 Exemple avec `--ri`
    $ 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

> Note:

> Les options `-rBRFEH`, `--ini` et `--r[fcezi]` ne sont disponibles qu'en mode CLI.