## Opciones de línea de comandos

La lista de opciones de línea de comandos proporcionadas por PHP está disponible en cualquier momento ejecutando PHP con la opción -h:

    Uso: php [opciones] [-f] <archivo> [--] [args...]
       php [opciones] -r <código> [--] [args...]
       php [opciones] [-B <begin_code>] -R <código> [-E <end_code>] [--] [args...]
       php [opciones] [-B <begin_code>] -F <archivo> [-E <end_code>] [--] [args...]
       php [opciones] -- [args...]
       php [opciones] -a

      -a               Ejecutar de forma interactiva
      -c <ruta>|<archivo> Buscar el archivo php.ini en este directorio
      -n               No se utilizará ningún archivo php.ini
      -d foo[=bar]     Definir la entrada INI foo con el valor 'bar'
      -e               Generar información extendida para el depurador/perfilador
      -f <archivo>     Analizar y ejecutar <archivo>.
      -h               Esta ayuda
      -i               Información de PHP
      -l               Verificación de sintaxis únicamente (lint)
      -m               Mostrar módulos compilados
      -r <código>      Ejecutar el código PHP sin usar etiquetas de script <?..?>
      -B <begin_code>  Ejecutar <begin_code> antes de procesar las líneas de entrada
      -R <código>      Ejecutar el código PHP para cada línea de entrada
      -F <archivo>     Analizar y ejecutar <archivo> para cada línea de entrada
      -E <end_code>    Ejecutar <end_code> después de procesar todas las líneas de entrada
      -H               Ocultar cualquier argumento pasado de herramientas externas.
      -S <dirección>:<puerto> Ejecutar con el servidor web integrado.
      -t <docroot>     Especificar el directorio raíz del documento para el servidor web integrado.
      -s               Salida de sintaxis HTML resaltada.
      -v               Número de versión
      -w               Salida de código fuente con comentarios y espacios en blanco eliminados.

      args...          Argumentos pasados al script. Usar -- args cuando el primer argumento
                       comienza con - o el script se lee desde stdin

      --ini            Mostrar nombres de archivos de configuración

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

Opciones de línea de comandos
Opción | Opción larga | Descripción
--- | --- | ---
-a | --interactive | Lanza PHP de forma interactiva. Para más información, consulte la documentación sobre el shell interactivo.
-b | --bindpath | Enlaza la ruta para los externos, en modo servidor FASTCGI (solo CGI).
-C | --no-chdir | No ir al directorio del script (solo CGI).
-q | --no-header | Modo silencioso. Suprime la salida de los encabezados HTTP (solo CGI).
-T | --timing | Mide el tiempo de ejecución del script, repetido count veces (solo CGI).
-c | --php-ini | Especifica el nombre del directorio en el que se encuentra el archivo php.ini, o bien especifica un archivo de configuración (`INI`) directamente (que no se llama necesariamente php.ini):
    $ php -c /custom/directory/ mon_script.php

    $ php -c /custom/directory/custom-file.ini mon_script.php
Si esta opción no se especifica, php.ini se buscará en los lugares por defecto.
-n | --no-php-ini | Ignora completamente php.ini.
-d | --define | Define un valor personalizado para cualquier directiva de configuración del archivo php.ini. La sintaxis es:
     -d configuration_directive[=value]
Ejemplo #1 Ejemplo de uso de `-d` para establecer una configuración INI
    # La omisión del valor conduce a dar el valor de "1"
    $ php -d max_execution_time
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(1) "1"

    # Pasar un valor vacío conduce a dar el valor de ""
    php -d max_execution_time=
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(0) ""

    # La directiva de configuración será cualquier valor pasado después del carácter '='
    $  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 | Genera información extendida para la depuración y el perfilado.
-f | --file | Analiza y ejecuta el archivo especificado. La opción -f es opcional y puede omitirse. El nombre del archivo es suficiente.
-h y -? | --help y --usage | Muestra información sobre la lista actual de opciones de la línea de comandos, así como su descripción.
-i | --info | Llama a la función phpinfo() y muestra el resultado. Si PHP no funciona correctamente, se recomienda utilizar el comando php -i y ver si no hay errores mostrados antes o después de la tabla de información. No olvide que el resultado de esta opción, si se utiliza el modo CGI, está en formato HTML y, por lo tanto, es de tamaño considerable.
-l | --syntax-check | Verifica la sintaxis pero no ejecuta el código PHP dado. La entrada proveniente de la entrada estándar se procesará si no se especifica ningún nombre de archivo, de lo contrario, cada archivo especificado se verificará. En caso de éxito, se muestra el mensaje `No syntax errors detected in <filename>` (Literalmente, no se detectaron errores de sintaxis en el archivo) en la salida estándar. En caso de error, se muestra el mensaje `Errors parsing <filename>` (Literalmente, error de análisis en el archivo filename) junto con los mensajes de error detectados por el analizador mismo. Si se encuentran errores en los archivos especificados (o en la entrada estándar), el código de retorno del shell se establece en `-1`, de lo contrario, el código de retorno del shell se establece en `0`. Esta opción no detecta errores fatales (por ejemplo, funciones no definidas) que requieren la ejecución del código. Nota: Antes de PHP 8.3.0, solo se podía especificar un nombre de archivo para verificar. Nota: Esta opción no funciona con la opción -r.
-m | --modules | Ejemplo #2 Mostrar módulos internos (y cargados) de PHP y Zend
    $ php -m
    [PHP Modules]
    xml
    tokenizer
    standard
    session
    posix
    pcre
    overload
    mysql
    mbstring
    ctype

    [Zend Modules]
> -r | --run | Permite la ejecución de PHP directamente en la línea de comandos. Las etiquetas de PHP (`<?php` y `?>`) no son necesarias y causarán un error de análisis si están presentes. Nota: Se debe prestar especial atención al utilizar esta opción de PHP para que no haya colisión con las sustituciones de variables en la línea de comandos realizadas por el shell. Ejemplo #3 Error de sintaxis al usar 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 el shell (sh/bash) realiza una sustitución de variables, incluso con las comillas dobles `"`. Dado que la variable $foo probablemente no está definida en el shell, se reemplaza por nada, lo que hace que el código pasado a PHP para ejecutar sea:
>     $ php -r " = get_defined_constants();"
> La solución a este problema es utilizar comillas simples `'`. Las variables de estas cadenas no serán sustituidas por sus valores por el shell. Ejemplo #4 Uso de comillas simples para evitar una sustitución por el 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 se utiliza un shell diferente de sh/bash, pueden encontrarse otros problemas; si es apropiado, se puede abrir un informe de errores a través de » https://github.com/php/php-src/issues. Es muy fácil tener problemas al intentar incluir variables de shell en el código, o al usar las barras invertidas para la protección. ¡Se le ha advertido! Nota: -r está disponible con el CLI SAPI pero no con el SAPI CGI. Nota: Esta opción solo se utiliza para cosas simples. Por lo tanto, algunas directivas de configuración (por ejemplo, auto_prepend_file y auto_append_file) se ignoran en este modo.
-B | --process-begin | Código PHP a ejecutar antes de procesar stdin.
-R | --process-code | Código PHP a ejecutar para cada línea de entrada. Hay dos variables especiales disponibles en este modo: $argn y $argi. $argn debe contener la línea PHP procesada en ese momento, mientras que $argi debe contener el número de la línea.
-F | --process-file | Archivo PHP a ejecutar para cada línea de entrada.
-E | --process-end | Código PHP a ejecutar después de realizar la entrada. Ejemplo #5 Ejemplo de uso de 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 desde 5.4.0.
-t | --docroot | Especifica la raíz de los documentos para el servidor web interno.
-s | --syntax-highlight y --syntax-highlighting | Muestra el código con colorización de sintaxis. Esta opción utiliza el mecanismo interno para analizar el archivo y escribir una versión coloreada del código fuente en formato HTML. Tenga en cuenta que esta opción solo genera un bloque HTML, con las etiquetas HTML `<code> [...] </code>`, sin encabezados HTML. Nota: Esta opción no funciona con la opción -r.
-v | --version | Ejemplo #6 Uso de la opción -v para recuperar el nombre del SAPI así como la versión de PHP y 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 | Muestra el código fuente sin comentarios ni espacios. Nota: Esta opción no funciona con la opción -r.
| --ini | Muestra los nombres de los archivos de configuración y los directorios analizados. Opcionalmente, pasar `--ini=diff` para mostrar las diferencias entre los archivos de configuración cargados y la configuración por omisión. Ejemplo #7 Ejemplo con `--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)
Nota: La opción `--ini=diff` no está disponible antes de PHP 8.5.0.
--rf | --rfunction | Muestra información sobre la función dada o el método de una clase (es decir, número y nombre de los parámetros). Esta opción solo está disponible si PHP se ha compilado con soporte Reflection. Ejemplo #8 Ejemplo con `--rf`
    $ php --rf var_dump
    Function [ <internal> public function var_dump ] {

      - Parameters [2] {
        Parameter #0 [ <required> $var ]
        Parameter #1 [ <optional> $... ]
      }
    }
--rc | --rclass | Muestra información sobre la clase dada (lista de constantes, propiedades y métodos). Esta opción solo está disponible si PHP se ha compilado con soporte Reflection. Ejemplo #9 Ejemplo con `--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 la información sobre la extensión dada (lista las opciones del php.ini, las funciones definidas, las constantes y las clases). Esta opción solo está disponible si PHP se ha compilado con soporte Reflection. Ejemplo #10 Ejemplo con `--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 | Muestra la información de configuración para la extensión Zend proporcionada (la misma información que la devuelta por la función phpinfo()).
--ri | --rextinfo | Muestra la información de configuración para la extensión dada (la misma información devuelta por la función phpinfo()). Las informaciones de configuración internas están disponibles utilizando el nombre de extensión "main" o "core". Ejemplo #11 Ejemplo con `--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]` solo están disponibles en modo CLI.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open