## Opciones de la línea de comandos

Se puede consultar en cualquier momento la lista de opciones de línea de comandos en el binario de PHP con el modificador -h:

    Usage: php [opciones] [-f] <fichero> [--] [args...]
       php [opciones] -r <código> [--] [args...]
       php [opciones] [-B <código_inicial>] -R <código> [-E <código_final>] [--] [args...]
       php [opciones] [-B <código_inicial>] -F <fichero> [-E <código_final>] [--] [args...]
       php [opciones] -- [args...]
       php [opciones] -a

      -a                      Se ejecuta interactivamente.
      -c <ruta>|<fichero>     Busca el fichero php.ini en este directorio.
      -n                      No se usará el fichero php.ini.
      -d foo[=bar]            Define la entrada INI de foo con el valor 'bar'
      -e                      Generate información extendida para el depurador/perfilador.
      -f <fichero>            Analiza y ejecuta el <fichero>.
      -h                      Esta ayuda.
      -i                      Información de PHP.
      -l                      Solamente revisa la sintáxis (lint).
      -m                      Muestra lo compilado en módulos.
      -r <code>               Ejecuta el <código> PHP sin utilizar las etiquetas del script <?..?>.
      -B <código_inicial>     Ejecuta el <código_inicial> antes de procesar las líneas de entrada.
      -R <code>               Ejecuta el <código> PHP por cada línea de entrada.
      -F <file>               Analiza y ejecuta el <fichero> por cada línea de entrada.
      -E <código_final>       Ejecuta el <código_final> después de procesar todas las líneas de entrada.
      -H                      Oculta los argumentos pasados desde cualquier herramienta externa.
      -S <dirección>:<puerto> Ejecuta con el servidor web interno.
      -t <raíz_documento>     Especifica la raíz del documento <raíz_documento> para el servidor web interno.
      -s                      Salida de la fuente en sintáxis HTML resaltada.
      -v                      Número de versión.
      -w                      Salida de la fuente con espacios en blanco y comentarios subrayados.
      -z <fichero>            Carga un <fichero> con extensión de Zend.

      args...                 Argumentos pasados al script. Utilice argumentos con -- cuando el primer argumento
                              inicie con - o el script sea leído desde la entrada estándar stdin

      --ini                   Muestra los nombres de fichero de configuración.

      --rf <nombre>           Muestra información sobre la función <nombre>.
      --rc <nombre>           Muestra información acerca de la clase <nombre>.
      --re <nombre>           Muestra información acerca de la extensión <nombre>.
      --rz <nombre>           Muestra información acerca de la extensión Zend <nombre>.
      --ri <nombre>           Muestra la configuración para la extensión <nombre>.

Opciones de línea de comandos
Opción | Opción Larga | Descripción
--- | --- | ---
-a | --interactive | Ejecutar PHP de forma interactiva. Para más información, consúltese la sección Consola interactiva.
-b | --bindpath | Ruta Ligada en modo de servidor FASTCGI externo (sólo en CGI).
-C | --no-chdir | No cambiar el directorio del script (sólo en CGI).
-q | --no-header | Modo silencioso. Elimina la salida de cabeceras HTTP (sólo en CGI).
-T | --timing | Calcula el tiempo de ejecución del script un número de veces (sólo en CGI).
-c | --php-ini | Especifica ya sea un directorio en el que se busca a php.ini o bien un fichero `INI` personalizado (que no tiene porqué llamarse php.ini necesariamente), p.ej.:
    $ php -c /directorio/propio/mi_script.php

    $ php -c /directorio/propio/fichero-propio.ini mi_script.php
Si no se especifica esta opción, se busca el fichero php.ini en las localizaciones predeterminadas.
-n | --no-php-ini | Ignorar por completo el fichero php.ini.
-d | --define | Establecer un valor predeterminado para cualquiera de las directivas de configuración permitidas en php.ini. Ésta es la sintaxis:
     -d directiva_de_configuracion[=valor]
    # Si se omite el valor, se establecerá un "1" a la directiva
    $ php -d max_execution_time
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(1) "1"

    # Si se pasa un valor vacío, se establecerá "" a la directiva
    php -d max_execution_time=
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(0) ""

    # Se pasará lo que haya tras el caracter '=' a la directiva de configuración
    $  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 | Activa el modo de información expandida, para usar con un depurador/perfilador.
-f | --file | Analiza y ejecuta el fichero proporcionado. El modificador -f es opcional y puede ser omitido - es suficiente con solo poner el nombre del fichero a ejecutar. Nota: Para pasar argumentos a un script, el primer argumento debe ser `--`, sino PHP los interpretará como opciones de PHP.
-h y -? | --help y --usage | Muestra una lista de opciones de línea de comandos, con descripciones de una línea sobre lo que hace.
-i | --info | Invoca a phpinfo(), y muestra el resultado. Si PHP no funcionara correctamente, es aconsejable utilizar php -i para ver donde se muestre cualquier mensaje de error antes o en el lugar de las tablas de información. Tenga en cuenta que al usarse en modo CGI la salida es en HTML y por lo tanto muy larga.
-l | --syntax-check | Provee un método conveniente para realizar solamente una revisión de sintáxis del código proporcionado de PHP. En caso de éxito, se muestra el texto `No syntax errors detected in <filename>` en la salida estándar y se devuelve un código de retorno `0`. Si fallara, se mostraría el texto `Errors parsing <filename>`, además del mensaje de error de análisis correspondiente en la salida estándar, y se retornaría el código `-1`. Esta opción no encuentra errores fatales (como funciones no definidas). Utilice el modificador -f si se desea también comprobar errores fatales. Nota: Esta opción no funciona junto con la opción -r.
-m | --modules | Ejemplo #1 Muestra los módulos PHP y Zend incorporados (y habilitados)
    $ php -m
    [PHP Modules]
    xml
    tokenizer
    standard
    session
    posix
    pcre
    overload
    mysql
    mbstring
    ctype

    [Zend Modules]
> -r | --run | Permite ejecutar PHP desde la línea de comandos. Las etiquetas de inicio y fin (`<?php` y `?>`) no son necesarias y provocarán un error sintáctico si estuvieran presentes. Nota: Debe tenerse cuidado al usar PHP de esta forma para no colisionar con sustituciones de variables de línea de comandos hechas por la propia consola. Ejemplo #2 Obteniendo un error sintáctico usando comillas dobles
>     $ 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
> El problema aquí es que sh/bash lleva a cabo una sustitución de variables incluso si estamos usando comillas dobles `"`. Puesto que la variable $foo no está definida, no se sustituye por nada, haciendo que el código real que se le pasa a la ejecución de PHP sea:
>     $ php -r " = get_defined_constants();"
> La forma correcta sería usar comillas simples `'`. Las variables de texto en comillas simples no se sustituyen en sh/bash. Ejemplo #3 Usando comillas simples para prevenir la sustitución de variables de la consola
>     $ 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 se está usando una consola diferente de sh/bash, es posible experimentar otros errores. Le animamos a enviar un informe de error a » https://github.com/php/php-src/issues. Tenga en cuenta que es muy fácil verse en problemas al tratar de utilizar variables (de la consola o de PHP) en código de línea de comandos, o al usar el caracter de barra invertida (\) para escapar caracteres, así que tome mucho cuidado haciendo eso. Ha sido advertido! Nota: -r está disponible en SAPI CLI, pero no en CGI SAPI. Nota: Esta opción está pensada unicamente para código muy básico, así que algunas directivas de configuración (tales como auto_prepend_file y auto_append_file) se ignoran en este modo.
-B | --process-begin | Código PHP a ejecutar antes de procesar la entrada. Añadido en PHP 5.
-R | --process-code | Código PHP a ejecutar por cada línea de entrada. Añadido en PHP 5. Hay dos variables especiales disponibles en este modo: $argn y $argi. $argn contendrá la línea que PHP está procesando en un momento dado, mientras que $argi contendrá el número de línea.
-F | --process-file | Fichero PHP a ejecutar por cada línea de entrada. Añadido en PHP 5.
-E | --process-end | Código PHP a ejecutar tras procesar cada línea. Añadido en PHP 5. Ejemplo #4 Usando las opciones -B, -R y -E para contar el número de líneas de un proyecto.
    $ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Total Lines: $l\n";'
    Total Lines: 37328
-S | --server | Inicia el servidor web interno. Disponible a partir de PHP 5.4.0.
-t | --docroot | Especifiva la raíz del documento para el servidor web interno. Disponible a partir de PHP 5.4.0.
-s | --syntax-highlight y --syntax-highlighting | Mostrar el código fuente destacando la sintaxis en color. Esta opción utiliza los mecanismos internos de análisis del ficheros y escribe una versión HTML coloreada y la muestra en la salida estándar. Tenga en cuenta que todo lo que hace es generar un bloque de etiquetas HTML `<code> [...] </code>`, sin cabeceras HTML. Nota: Esta opción no puede funcionar junto con la opción -r.
-v | --version | Ejemplo #5 Al usar -v obtenemos el nombre de la SAPI y la versión de PHP y 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 | Mostrar código fuente sin comentarios ni líneas en blanco. Nota: Esta opción no puede usarse junto con la opción -r.
-z | --zend-extension | Carga una extensión Zend. Si sólo se proporciona un nombre de fichero, PHP trata de cargar la extensión en el directorio de bibliotecas por defecto de su sistema (normalmente se especifica en /etc/ld.so.conf en sistemas Linux, por ejemplo). Si se proporciona un nombre de fichero con la ruta absoluta no se usarán las rutas de bibliotecas del sistema. Un nombre de fichero relativo que incluya algún directorio le indicará a PHP que sólo trate de cargar la extensión a partir del directorio actual.
| --ini | Mostrar el nombre del fichero de configuración y de los directorios analizados. Disponible desde PHP 5.2.3. Ejemplo #6 Ejemplo de `--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 | Mostrar información de la función o método proporcionado (p.ej. número y nombre de los parámetros). Disponible desde PHP 5.1.2. Esta opción sólo está disponible si se compiló PHP con soporte para Reflection. Ejemplo #7 Uso básico de `--rf`
    $ php --rf var_dump
    Function [ <internal> public function var_dump ] {

      - Parameters [2] {
        Parameter #0 [ <requerido> $var ]
        Parameter #1 [ <opcional> $... ]
      }
    }
--rc | --rclass | Muestra información de la clase dada (lista de constantes, propiedades y métodos). Disponible desde PHP 5.1.2. Esta opción sólo está disponible si se compiló PHP con soporte para Reflection. Ejemplo #8 Ejemplo de `--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 | Muestra información de la extensión dada (lista de opciones en php.ini, funciones definidas, constantes y clases). Disponible desde PHP 5.1.2. Esta opción sólo está disponible si se compiló PHP con soporte para Reflection . Ejemplo #9 Ejemplo de `--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 | Mostrar la información de configuración para la extensión Zend proporcionada (la misma información que es devuelta por la función phpinfo()). Disponible como parte de PHP 5.4.0.
--ri | --rextinfo | Mostrar información de configuración de la extensión dada (la misma información que muestra phpinfo()). Disponible desde PHP 5.2.2. La información relevante está disponible usando "main" como nombre de extensión. Ejemplo #10 Ejemplo de `--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

> Nota:

> Las opciones `-rBRFEH`, `--ini` y `--r[fcezi]` sólo están disponibles en CLI.