Usando PHP desde la línea de comando III

Como puedes ver, en este caso no atención es dada a pasar los parámetros que comiensen con - en tu programa.



Tabla 43-3. Opciones en la línea de comando
OpcionesDescripcion
-scolora el sintaxis de tu código
Esta opción usa un mecanismo interno para ejecutar el archivo, y produce una versión coloreada en HML y la escribe como output normal. Nota que todo lo que hace es generar un bloque de <code> [...] </code>HTML tags, no cabecera deHTML es creada.
Nota: Esta opción no trabaja en conjunto con -r.
-wTe mostrara tu código sin comentarios ni espacios blancos.
Nota: Esta opción no trabaja en conjunto con -r.
-fEjecuta el archivo indicado en la opción -f. Esta opción es opcional y puede ser excluida. Solamente proveiendo el archivo que necesita ser ejecutado es suficiente.
-vEscribe la version de PHP, PHP SAPI y Zend al output normal, por ejemplo:
$ php -v
PHP 4.3.0 (cli), Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies

-cCon esta opción uno puede especificar el directorio donde encontraremos el php.ini archivo, o tu puedes especificar una versión única del mismo (la cual no tiene que ser llamada php.ini), por ejemplo:
$ php -c /costumatisado/directorio/ mi_programa.php

$ php -c /customatisado/directorio/customatisado-archivo.ini mi_programa.php

-aCorre PHP interactivamente.
-dEsta opción te hayudara a crear el valor de cualquier directiva de configuración permitidas en el php.ini archivo. El sintaxis es:
-d directiva__de_configuracion [=valor]

Ejemplos:
# Omitting the value part will set the given configuration directive to "1"
# Omitiendo la parte relacionada al valor, le asignara a la directiva de configuracion el valor # "1"
$ php -d max_execution_time -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(1) "1"

# Passing an empty value part will set the configuration directive to ""
# Pasando un valor vac&iacute;o, le asignara a la directiva de configuraci&oacute;n el valor ""
php -d max_execution_time= -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(0) ""

# The configuration directive will be set to anything passed after the '=' character
# la directiva de configuraci&oacute;n sera asignada a todo pasada el "=" simbolo
$  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"

-eGenerando mas información para el debugger/profiler.
-zActiva las extensiones Zend. Si solamente un archivo es dado, PHP tratará de activar estas extensiones directamente desde el directorio predeterminado donde esté la biblioteca en su sistema (Usualmente especificado/etc/ld.so.conf en Linux). Pasando el nombre del archivo con descripción absoluta de la ubicación de sus archivos, no usará las bibliotecas en su sistema. Un archivo conteniendo la información de estos directorios, le dira a PHP que solamente trate de activar las extensiones relativas al directorio donde te encuentras
-lEsta opción proveerá una forma conveniente para marcar tu sintaxis en tu código. En caso de suceso, el texto "No sintax errors detected in <filename> (no errores de sintaxis fueron detectados) es escrito en tu output normal, y la línea de comando retornara el código 0. En caso de problemas, el texto Errors parsing <filename>, en adición al la forma interna de detectar errores, mensajes son escritos como output normal y tu línea de comando recibirá el código 255
Esta opción no encontrara errores fatales (como por ejemplo funciones indefinida), usa -f si tu quieres probar por esta clase de errores también.
Nota: Esta opción no trabaja en conjunción con -r
-mUsando esta opción, PHP imprime sus módulos internos (y activados) usados por PHP y Zend:
$ php -m
[PHP Modules]
xml
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

-iEsta opción llama phpinfo, e imprime los resultado. Si PHP no esta trabajando correctamente, es recomendable que uses esta opción observes si algún mensaje es imprimido antes de, o en medio de la información dada por esta opción. Es un detalle importante que entiendas que el mensaje imprimido es en HTML y por esta razón grandecito.
-rEsta opción te ayudara a ejecutar PHP directamente desde la línea de comando. Las etiquetas que determinas el principio y al final de tu programa (<?php y ?>no son necesarias y causaran errores si las pones en tu código.
Nota: Debes tener cuidado cuando usando esta forma de PHP para que no crees conflicto con la substitución de variables usada por la línea de comando.
Ejemplos de errores
$ php -r "$foo = get_defined_constants();"
Command line code(1) : Parse error - parse error, unexpected '='
El problema aquí es que sh/bash esta haciendo una substitución de variables, aunque las comillas (") están presentes. Desde que la variable $foo probablemente no esta definida, esta no se inflara en ninguna dirección, el resultado es que el código pasado a PHP para que ejecute realmente lee:
$ php -r " = get_defined_constants();"
La forma correcta de hacer esto, seria usando solamente una comilla ('), variables usando solamente una comilla no son infladas por sh/bash.
$ 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 tu no estas usando sh/bash, también puedes encontrar otros problemas. Por favor reporta estos problemas mandando un e-mail a phpdocs@lists.php.net Tu también puedes tener problemas si tratas de poner variables en tu código o cuando usas "/" como símbolos de escape. Te hemos advertido
Nota: -r esta listo en CLI SAPI y no en el CGI SAPI.
-hCon esta opción, tu puedes obtener información acerca de las opciones describías anteriormente, y una breve descripción acerca de sus funciones.


PHP puede ejecutar tus programas absolutamente independiente de tu servidor de páginas de web. Si tu usas Unix, tu puedes añadir una línea especial al principio de tu programa, y hacerlo ejecutable, para que el sistema sepa que programa debe ejecutar tu nueva creación. Si usas windows, tu puedes asociar tu programa con php.exe para que solamente tengas que ejecutarlo como harías con otros programas bajo windows, también puedes crear un "batch" archivo para ejecutar tu programa por medio de PHP.

La primera línea que usaste para hacer que tu programa funcione en Unix, no le ara daño a tu programa cuando ejecutad bajo windows, pero de esta manera puedes crear programas que puedes ser usados bajo las dos plataformas. A continuación te daremos un ejemplo:

Ejemplo 43-1. Programa para correr en la línea do comando (script.php)
#!/usr/bin/php
<?php
if ($argc != || in_array($argv[1], array('--help''-help''-h''-?'))) {?>
Este es un programa en php entendido para la l&iacute;nea de
comando con una opci&oacute;n.

  Usage:
  <?php echo $argv[0]; ?> <option>

  <option> puede ser cualquier palabra que tu quieras
  imprimir. Con la opci&oacute;n --help, -help -h or -?, tu puedes
  obtener esta informaci&oacute;n

<?php} else {
    echo 
$argv[1];
}
?>

En el programa anterior, usamos una línea especial como nuestra primera línea, para indicar que archivo deber ser ejecutado por PHP. Nosotros trabajamos con una versión de CLI aquí, por eso, no tendremos cabeceras de HTTP imprimidas. Hay dos variables que puedes usar cuando escribiendo aplicaciones en la línea de comando en PHP: $argc y $argv. La primera es el numero de argumentos mas uso (el nombre del programa siendo ejecutado). La segunda es un array conteniendo los argumentos, empezando con el programa nombre, y el numero cero "0" ($argv[0]).

En el programa anterior chequeamos si habían mas, o menos de dos argumentos. También trata de ver si --help-help-h o -?, son llamados, e imprime el mensaje de ayuda.
Si tu quieres ejecutar el programa anterior en Unix, tu tienes que hacerlo ejecutable, y simplemente llamado script.php echo this o script.php -h. En windows, tu puedes hacer un batch archivo para alcanzar estos resultados:


Ejemplo 43-2. Archivo batch para ejecutar el programa php (script.bat)
@c:\php\cli\php.exe script.php %1 %2 %3 %4

Asumiendo que llamaste el programa descrito anteriormente script.php , Y que tienes tu CLI php.exe en c:\php\cli\php.ese este archivo batch, lo ejecutara para ti con las funciones añadidas: script.bat echo this o script.bat -h.

Mira también la documentación de Readline para mas funciones que puedes usar para incrementar tus opciones en este sujeto.

No response to “Usando PHP desde la línea de comando III”