PHP desde la línea de comandos Uso de la línea de comandos
Introducción El principal objetivo de la SAPI CLI es el desarrollo de aplicaciones de consola con PHP. En este capítulo se explican las diferencias que hay entre la SAPI CLI y otras SAPI. Vale la pena aclarar que &cli; y CGI son SAPI diferentes pese a que comparten la mayoría de características. La SAPI CLI se habilita por omisión con , aunque puede deshabilitarse usando la opción al ejecutar ./configure. Tanto el nombre, ubicación y presencia de los binarios de &cli;/CGI diferirán dependiendo de cómo se instale PHP en el sistema. Al ejecutar make de manera predeterminada, CGI y &cli; se construyen y ubican como sapi/cgi/php-cgi y sapi/cli/php respectivamente, en el directorio origen de PHP. Debe tenerse en cuenta que las dos se llaman php. Lo que suceda durante la ejecución de make install dependerá de la línea de configuración. Si durante la configuración se elige una SAPI de módulo, tal como apxs, o bien se usa la opción , se copiará &cli; a {PREFIJO}/bin/php al ejecutar make install; de lo contrario se colocará CGI ahí. Por ejemplo, si se utiliza en la línea de configuración, &cli; se copiaría a {PREFIJO}/bin/php durante make install. Si se desea sobrescribir la instalación del binario de CGI, debe usarse make install-cli tras make install. Alternativamente se puede especificar en la línea de configuración. Ya que tanto como están habilitadas predeterminadamente, el simple hecho de tener en la línea de configuración no implica que &cli; se copie como {PREFIJO}/bin/php durante make install. Desde PHP 5, en Windows el binario de &cli; se distribuye en la carpeta principal con el nombre de php.exe. La versión CGI se distribuye como php-cgi.exe. Además, se distribuye un fichero php-win.exe si PHP se configuró con . Este funciona igual que la versión &cli;, solo que no muestra ninguna salida y, por tanto, no proporciona ninguna consola. ¿Qué SAPI tengo? Desde la consola, al escribir php -v sabremos si php es CGI o &cli;. Véase también la función php_sapi_name y la constante PHP_SAPI. En Unix hay disponible una página del manual escribiendo man php en la terminal.
Diferencias respecto a otras <acronym>SAPI</acronym>s Principales diferencias de la SAPI &cli; respecto a otras SAPI: A diferencia de la SAPI CGI, no se envía ninguna cabecera a la salida. Pese a que la SAPI CGI tiene un mecanismo para suprimir las cabeceras HTTP, no existe un equivalente para habilitarlas en la SAPI CLI. Por omisión, &cli; se inicia en modo silencioso, si bien se mantienen las opciones y por motivos de compatibilidad, de forma que pueda ser posible utilizar antiguos scripts CGI. No se cambia el directorio de trabajo al del script (las opciones y se mantienen por compatibilidad). Mensajes de error en texto plano (no se formatean en HTML). Hay ciertas directivas de &php.ini; que se ignoran en la SAPI CLI debido a que no tienen sentido en un entorno de consola: Directivas &php.ini; anuladas Directiva Valor predeterminado en la SAPI &cli; Comentario html_errors &false; Su valor predeterminado es &false;, ya que puede resultar complicado leer mensajes de error en la consola cuando estos están mezclados con etiquetas HTML no interpretadas. implicit_flush &true; En un entorno de consola, es preferible que las salidas que procedan de print, echo y y similares se muestren inmediatamente y no se mantenga en memoria intermedia. Aun así, es posible utilizar output buffering para postergar o manipular la salida estándar. max_execution_time 0 (ilimitado) PHP, en un entorno de consola, tiende a utilizarse para una gama mucho más amplia de los propósitos típicos de scripts basados en web, y como éstos pueden ser de muy larga duración, el tiempo de ejecución máximo se establece a ilimitado. register_argc_argv &true; Establecer esta directiva a &true; significa que los scripts ejecutados mediante la SAPI &cli; siempre tienen acceso a argc (número de argumentos que se le pasan a la aplicación) y argv (array con los argumentos en sí). Las variables de PHP $argc y $argv se establecen automáticamente al valor apropiado cuando se utiliza la SAPI &cli;. Esos valores se pueden encontrar también en el array $_SERVER, por ejemplo: $_SERVER['argv'] output_buffering &false; Aunque la directiva &php.ini; está codificada como &false;, las funciones del buffer de salida sí están disponibles. max_input_time &false; &cli; de PHP no tiene soporte para GET, POST o subidas de ficheros.
Estas directivas no pueden ser inicializadas con otro valor desde el fichero de configuración &php.ini; o con un valor personalizado (si se especifica). Esta limitación se debe a que los valores son aplicados después que todos los ficheros de configuración han sido analizados. Sin embargo, sus valores pueden ser cambiados en tiempo de ejecución (aunque esto no es aplicable a todas ellas, como register_argc_argv). Se recomienda establecer ignore_user_abort en scripts de línea de comandos. Para más información, consulte ignore_user_abort.
Para facilitar el trabajo en entornos de consola, se definen varias constantes para flujos de entrada/salida. La SAPI CLI no cambia el directorio actual a aquel en el que se encuentra el script ejecutado. Ejemplo que muestra las diferencias respecto a la <acronym>SAPI</acronym> <acronym>CGI</acronym>: ]]> Al usar la versión CGI, la salida es: Esto muestra claramente que PHP cambia el directorio actual a aquel en que se encuentre el script ejecutado. Al usar la SAPI CLI se obtiene: Esto ofrece una gran flexibilidad a la hora de escribir herramientas de consola en PHP. La SAPI CGI admite este comportamiento propio de la SAPI CLI mediante la opción al ejecutarlo desde la línea de comandos.
Opciones de la línea de comandos Opciones Se puede consultar en cualquier momento la lista de opciones de línea de comandos en el binario de PHP con el modificador : [--] [args...] php [opciones] -r [--] [args...] php [opciones] [-B ] -R [-E ] [--] [args...] php [opciones] [-B ] -F [-E ] [--] [args...] php [opciones] -- [args...] php [opciones] -a -a Se ejecuta interactivamente. -c | 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 Analiza y ejecuta el . -h Esta ayuda. -i Información de PHP. -l Solamente revisa la sintáxis (lint). -m Muestra lo compilado en módulos. -r Ejecuta el PHP sin utilizar las etiquetas del script . -B Ejecuta el antes de procesar las líneas de entrada. -R Ejecuta el PHP por cada línea de entrada. -F Analiza y ejecuta el por cada línea de entrada. -E Ejecuta el después de procesar todas las líneas de entrada. -H Oculta los argumentos pasados desde cualquier herramienta externa. -S : Ejecuta con el servidor web interno. -t Especifica la raíz del 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 Carga un 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 Muestra información sobre la función . --rc Muestra información acerca de la clase . --re Muestra información acerca de la extensión . --rz Muestra información acerca de la extensión Zend . --ri Muestra la configuración para la extensión . ]]> 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.: 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: -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 es opcional y puede ser omitido - es suficiente con solo poner el nombre del fichero a ejecutar. 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 si se desea también comprobar errores fatales. Esta opción no funciona junto con la opción . -m --modules Muestra los módulos PHP y Zend incorporados (y habilitados) -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. 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. Obteniendo un error sintáctico usando comillas dobles 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: La forma correcta sería usar comillas simples '. Las variables de texto en comillas simples no se sustituyen en sh/bash. Usando comillas simples para prevenir la sustitución de variables de la consola 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 &url.php.bugs;. 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! está disponible en SAPI CLI, pero no en CGI SAPI. 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. Usando las opciones <option>-B</option>, <option>-R</option> y <option>-E</option> para contar el número de líneas de un proyecto. -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. Esta opción no puede funcionar junto con la opción . -v --version Al usar <option>-v</option> obtenemos el nombre de la <acronym>SAPI</acronym> y la versión de PHP y Zend -w --strip Mostrar código fuente sin comentarios ni líneas en blanco. Esta opción no puede usarse junto con la opción . -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 de <literal>--ini</literal> --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. Uso básico de <literal>--rf</literal> public function var_dump ] { - Parameters [2] { Parameter #0 [ $var ] Parameter #1 [ $... ] } } ]]> --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 de <literal>--rc</literal> class Directory ] { - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [0] { } - Methods [3] { Method [ public method close ] { } Method [ public method rewind ] { } Method [ 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 de <literal>--re</literal> extension #19 json version 1.2.1 ] { - Functions { Function [ function json_encode ] { } Function [ 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 de <literal>--ri</literal> 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 ]]>
Las opciones -rBRFEH, --ini y --r[fcezi] sólo están disponibles en &cli;.
Ejecutando ficheros PHP Uso Hay tres formas distintas de proveer a la SAPI CLI con código PHP para que sea ejecutado: Decirle a PHP que ejecute un determinado fichero. Ambas formas (usando o no el modificador ) ejecutan el fichero mi_script.php. Nótese que no hay restricción sobre cuales ficheros puede ser ejecutado; en particular, el nombre del fichero no es necesario que tenga una extensión .php. Si se necesita proporcionar argumentos al script, utilizando el modificador , el primer argumento debe ser --. Pasar el código PHP para ejecutarlo directamente en la línea de comandos. Debe tomarse especial cuidado con respecto al uso de comillas y la sustitución de variables de la consola. Lea cuidadosamente el ejemplo: No hay etiquetas de inicio y fin. El modificador simplemente no lo necesita. Si se usare, provocaría un error sintáctico. Proporcionar el código PHP a ejecutar a través de la entrada estándar (stdin). Esto ofrece la posibilidad de crear código PHP dinámicamente para pasárselo al binario, tal y como se ve en este ejemplo (ficticio): salida_final.txt ]]> No se pueden combinar las tres formas para ejecutar código. Como todas las aplicaciones de consola, el binario de PHP acepta un determinado número de argumentos, sin embargo un script PHP también puede recibirlos. El número de argumentos que pueden ser pasados a su script no está limitado por PHP (aunque la consola tiene un determinado número de caracteres límite; usualmente usted no alcanzará este límite). Los argumentos pasados al script están disponibles en el array global $argv. El primer índice (cero) siempre contiene el nombre del script como se llamó desde la línea de comandos. Nótese que, si el código es ejecutado en la línea utilizando el modificador de consola , el valor de $argv[0] será simplemente un guión medio -). Lo mismo aplica si el código es ejecutado por medio de una tubería desde la entrada estándar STDIN. Una segunda variable global, $argc, contiene el número de elementos en el arreglo $argv (pero no el número de argumentos pasados al script). Dado que los argumentos que se pasan a un script no comienzan con el caracter -, no hay nada especial a tener en cuenta. Si se pasa a un script un argumento que comience por - provocará errores porque el intérprete de PHP pensará que debe manejarlo él, aún antes de ejecutar el script. Para prevenir esto, utilice el separador de lista de argumentos --. Una vez que PHP lea este separador, todos los argumentos que lo sigan se pasarán intactos al script. [args...] [...] # Esto pasrá el argumento '-h' al script, impidiendo que PHP muestre su uso $ php -r 'var_dump($argv);' -- -h array(2) { [0]=> string(1) "-" [1]=> string(2) "-h" } ]]> Sin embargo, en sistemas Unix, hay otra forma de usar PHP para scripts de consola. Se puede escribir un script en el que la primera línea comience con #!/usr/bin/php (sustitúyalo por la ruta a su &cli; binario de PHP si es diferente). El resto del fichero debería contener código PHP normal con las etiquetas usuales de inicio y fin de PHP. Una vez que se otorguen permisos de ejecución al fichero apropiadamente (p.ej. chmod +x test) el script podrá ejecutarse como cualquier otro script de consola o perl: Ejecutando un script PHP como un script de consola ]]> Asumiendo que este fichero se llama test y que está en el directorio actual, es posible hacer lo siguiente: string(6) "./test" [1]=> string(2) "-h" [2]=> string(2) "--" [3]=> string(3) "foo" } ]]> Tal y como puede verse, en este caso no hace falta tener cuidado al pasar al script parámetros que comienzan con -. El ejecutable de PHP puede ser utilizado para ejecutar scripts de PHP que sean absolutamente independientes del servidor web. En sistemas Unix, los caracteres especiales #! (o conocido como "shebang") deben añadirse en la primera línea del script seguido de la ruta hacia el binario de PHP para que le indique autom[aticamente al sistema cual es el programa que debería ejecutar al script. En plataformas Windows puede asociar php.exe para que funcione al hacer doble clic en ficheros con extensión .php, o se puede hacer un fichero por lotes para ejecutar el script mediante PHP. La primera línea especial "shebang" que se añade a un script para que funcione en Unix no interferirá en Windows (ya que está formateado como un comentario de PHP), así que pueden escribirse programas para plataformas independientes incluyéndose sin ningún problema. Más abajo puede encontrarse un ejemplo sencillo de cómo escribir un programa de línea de comandos en PHP. Script destinado a ejecutarse desde la línea de comandos (script.php) Éste es un script PHP de línea de comandos con un parámetro. Uso: puede ser alguna palabra que desee mostrar en pantalla. Con las opciones --help, -help, -h, o -?, puede mostrarse esta ayuda. ]]> El script de arriba, incluye la primera línea especial "shebang" de Unix para indicar que este fichero debería ejecutarse por PHP. Puesto que aquí estamos trabajando con una versión &cli;, no se mostrarán cabeceras HTTP. El programa comprueba primero que hay más de un parámetro (adicionalmente al nombre del script, el cual también es contado). Si no lo hay, o si el parámetro fuese , , o , se imprime el mensaje de ayuda, utilizando $argv[0] para escribir el nombre del script dinámicamente tal como se escribió en la línea de comandos. De otra manera, el parámetro es mostrado exactamente como se recibió. Para ejecutar el script superior en Unix, debe otorgarle permisos de ejecución al fichero para hacerlo ejecutable, y llamarlo simplemente como script.php mostrar_esto o script.php -h. En Windows, se puede crear un fichero por lotes para lograr esta tarea: Fichero por lotes para ejecutar un script PHP en línea de comandos (script.bat) Asumiendo que el programa superior se llamara script.php, y &cli; php.exe estuviera en C:\php\php.exe , este fichero por lotes lo ejecutaría automáticamente con los parámetros que se le hayan pasado: script.bat mostrar_esto o script.bat -h. Vea también la documentación de extensión Readline para conocer más funciones que pueden ser utilizadas para mejorar las aplicaciones de línea de comandos en PHP. Si está en Windows, puede configurar PHP para que no sea necesario añadir ni C:\php\php.exe ni la extensión .php, tal como se describe en PHP en Línea de Comandos en Microsoft Windows.
Flujos de entrada/salida Flujos de E/S SAPI CLI define algunas constantes para flujos de E/S que simplifican la programación en línea de comandos. Constantes específicas de CLI Constante Descripción STDIN Flujo abierto a stdin. Ahorra tener que abrirlo con ]]> Si se desea leer una sola línea de stdin, puede usarse ]]> STDOUT Flujo abierto a stdout. Ahorra tener que abrirlo con ]]> STDERR Flujo abierto a stderr. Ahora tener que abrirlo con ]]>
Teniendo esto en cuenta, no es necesario abrir por ejemplo un flujo a stderr, sino que puede usarse la constante en lugar del recurso de tipo flujo: No es necesario cerrar explícitamente estos flujos, ya que se cierra automáticamente por PHP al finalizar el script. Estas constantes no están disponibles si se leyera el script PHP a partir de stdin.
Consola interactiva Desde PHP 5.1.0, SAPI CLI ofrece una consola interactiva si se usa con el modificador y PHP está compilado con la opción . Al usar la consola interactiva, se puede escribir directamente código PHP que se ejecuta al momento. Ejecutando código desde la consola interactiva echo 5+8; 13 php > function addTwo($n) php > { php { return $n + 2; php { } php > var_dump(addtwo(2)); int(4) php > ]]> La consola interactiva, además, proporciona autocompletado mediante el tabulador de funciones, constantes, nombres de clases, variables, llamadas a métodos estáticos y constantes de clases. Autocompletado con el tabulador Al pulsar dos veces la tecla tabulador habiendo múltiples opciones de completados, se mostrará una lista con éstas: strp[TAB][TAB] strpbrk strpos strptime php > strp ]]> Cuando sólo hay una posible opción, sólo con pulsar una vez el tabulador se completará el resto de la línea: strpt[TAB]ime( ]]> También funciona el autocompletado para nombres que se han definido durante la sesión de consola interactiva: $fooEsteEsUnNombreDeVariableMuyLargo = 42; php > $foo[TAB]EsteEsUnNombreDeVariableMuyLargo ]]> La consola interactiva almacena tu historial, al que se puede acceder usando las teclas arriba y abajo. El historial se almacena en el fichero ~/.php_history. Ya en PHP 5.4.0, la SAPI CLI provee las configuraciones de &php.ini;, cli.pager y cli.prompt. La configuración de cli.pager permite a un programa externo (tal como less) para que funcione como un paginador para la salida en lugar de se desplegado directamente en la pantalla. Las configuraciones de cli.prompt permite cambiar el indicador de ingreso de órdenes php >. In PHP 5.4.0 también fue posible establecer las configuraciones de &php.ini; en la shell interactiva utilizando una notación abreviada. Estableciendo configuraciones de &php.ini; en la shell interactiva La configuración de cli.prompt: #cli.prompt=hola mundo :> hola mundo :> ]]> Usando comillas simples inclinadas es posible ejecutar código PHP en el indicador de órdenes: #cli.prompt=`echo date('H:i:s');` php > 15:49:35 php > echo 'hola'; hola 15:49:43 php > sleep(2); 15:49:45 php > ]]> Establecer el paginador a less: #cli.pager=less php > phpinfo(); (salida desplegada en less) php > ]]> La configuración de cli.prompt soporta unas cuantas secuencias de escape: Secuencias de escape de <parameter>cli.prompt</parameter> Sequence: Description: \e Utilizado para agregar colores al ingreso de órdenes. Un ejemplo podría ser \e[032m\v \e[031m\b \e[34m\> \e[0m \v La versión de PHP. \b Indica cual bloque de PHP está dentro. Por ejemplo /* se usa para indicar que está dentro de un comentario multilineal. El alcance externo es denotado por php. \> Indica el caracter de ingreso de órdenes. El caracter predeterminado es >, pero cambia cuando la shell está dentro de un bloque indeterminado o una cadena. Los caracteres posibles son: ' " { ( >
Los ficheros que se han incluido en este modo mediante auto_prepend_file y auto_append_file se analizan con algunas restricciones - p.ej. las funciones deben estar definidas antes de que se carguen. La auto-carga no está disponible al usar PHP en modo interactivo en &cli;.
Servidor web interno Este servidor web ha sido diseñado para ayudar al desarrollo de aplicaciones. También puede ser útil para propósitos de prueba o para demostraciones de aplicaciones que se ejecutan en entornos controlados. No se pretende que sea un servidor web con todas las funciones. No debe ser utilizado en una red pública. Desde PHP 5.4.0, la SAPI CLI provee un servidor web embebido. El servidor web ejecuta solamente un único proceso monohilo, por lo que las aplicaciones PHP se detendrán si la solicitud está bloqueada. Las peticiones de URI se sirven desde el actual directorio de trabajo donde PHP se inició, a menos que la opción -t sea utilizada para especificar una raíz de documentos explícita. Si una petición de URI no especifica un fichero, entonces el index.php o index.html que estén en el directorio dado serán devueltos. Si ninguno de los ficheros existen, la búsqueda de index.php e index.html continuará en el directorio padre y continuará así hasta encontrar uno de ello o se alcance el directorio raíz. Si se encuentra index.php o index.html, se devuelve este y $_SERVER['PATH_INFO'] se establece a la parte final del URI. De lo contrario se devuelve un código de respuesta 404. Si un fichero PHP es proporcionado en la línea de comandos cuando se inicia el servidor web éste es tratado como un script "enrutador". El script es ejecutado al inicio de cada petición HTTP. Si este script devuelve &false;, entonces el recurso solicitado se devuelve tal cual está. De otra forma la salida del script se devuelve en el navegador. Los tipos MIME estándar son devueltos para ficheros con extensiones: .3gp, .apk, .avi, .bmp, .css, .csv, .doc, .docx, .flac, .gif, .gz, .gzip, .htm, .html, .ics, .jpe, .jpeg, .jpg, .js, .kml, .kmz, .m4a, .mov, .mp3, .mp4, .mpeg, .mpg, .odp, .ods, .odt, .oga, .ogg, .ogv, .pdf, .pdf, .png, .pps, .pptx, .qt, .svg, .swf, .tar, .text, .tif, .txt, .wav, .webm, .wmv, .xls, .xlsx, .xml, .xsl, .xsd, y .zip. Registro de cambios: Tipos MIME soportados (extensiones de ficheros) &Version; &Description; 5.5.12 .xml, .xsl, and .xsd 5.5.7 .3gp, .apk, .avi, .bmp, .csv, .doc, .docx, .flac, .gz, .gzip, .ics, .kml, .kmz, .m4a, .mp3, .mp4, .mpg, .mpeg, .mov, .odp, .ods, .odt, .oga, .pdf, .pptx, .pps, .qt, .swf, .tar, .text, .tif, .wav, .wmv, .xls, .xlsx, y .zip 5.5.5 .pdf 5.4.11 .ogg, .ogv, and .webm 5.4.4 .htm and .svg
Iniciando el servidor web La terminal mostrará: Después de una petición de una URI para http://localhost:8000/ y http://localhost:8000/mi_script.html la terminal mostrará algo similar a: Iniciando con una raíz de documentos específica La terminal mostrará: Utilizando un Script enrutador En este ejemplo, las peticiones a las imágenes se mostrarán, pero las peticiones a ficheros HTML mostrarán "Bienvenido a PHP": Bienvenido a PHP

"; } ?>]]>
Revisión del uso de la CLI del servidor web Para reutilizar un framework de script enrutador durante el desarrollo con la CLI del servidor web server y luego con un servidor web en producción: ]]> Manejando tipos de ficheros no soportados Si necesita servir un recurso estático cuyo tipo MIME no es manejado por la CLI del servidor web, utilice: ]]> Accediendo a la CLI del servidor web desde máquinas remotas Puede hacer que el servidor web sea accesible en el puerto 8000 a cualquier interfaz con:
Configuración INI Opciones de configuración de la SAPI CLI &Name; &Default; &Changeable; &Changelog; cli_server.color "0" PHP_INI_ALL Disponible desde PHP 5.4.0.
&ini.descriptions.title; cli_server.color boolean Habilita el servidor web de desarrollo interno para usa la codificación de color ANSI en la salida del terminal.