SunshinePHP Developer Conference 2015

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 » http://bugs.php.net/. 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 CLI SAPI, 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.

add a note add a note

User Contributed Notes 1 note

up
0
Ap.Muthu
20 days 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.
To Top