InicioInfoAprendé a usar la línea de comandos de PHP
Cosas A tener en cuenta:
Aprendé a usar la línea de comandos de PHPEl responsable de que el contenido del artículo de IBM esté en español soy yo
desarrollo La función split() de PHP ya es obsoleta, sin embargo, el post es solo una guía de el potencial de CLI PHP


Los Beneficios de CLI PHP

Por muchos años hasta ahora, he estado aplicando una doble definición de lo que significa ser un ingeniero. Según mi conocimiento, un ingeniero es alguien quien usa una herramienta para el propósito que originalmente fue hecha. Mientras que no siempre es una buena idea, cuando tu te pones a pensar en todo, de invención y de hecho, mas innovación todo viene de usar algo en una manera para la cual no era pensada usarlo antes.

Imagina mi sorpresa, entonces, cuando me dio la idea de usarlo con mi viejo amigo PHP, el cual siempre ha sido de confianza en páginas web, como una línea de comandos. Difícilmente seré la primera persona en hacer esto, pero la idea era nueva para mi.

Claro, solo el hecho de que puedes usar PHP en una línea de comandos no es necesariamente la mejor razón para hacerlo. Sin embargo, puedes encontrar rápidamente muchas agradables sorpresas cuando empiezas a experimentar con PHP de esta manera. Para empezar que debuggear scripts existentes se vuelve muchísimo mas simple. Programas que consisten básicamente en unos datos de salida con muy poca lógica son increíblemente simples de hacer en PHP. Sobre eso, puedes usar todo tu conocimiento de PHP para satisfacer tareas que no pensarías que podrías hacer antes. De hecho, no hay nada que te detenga de usar PHP como tu navaja suiza para casi cualquier proyecto de programación.

Intrigado? Bueno, vamos a empezar a ver lo que puedes lograr usando PHP en la línea de comandos.

Los Beneficios de CLI PHP

La instalación es sencilla respecto a que ni siquiera es necesario instalar algo. Comienza con scripts simples de PHP en la línea de comandos. Puedes usar scripts existentes, o puedes usar el código de mas abajo. Este ejemplo es en Linux®, pero puedes aplicar los principios en otros sistemas.

Primero, confirma la ubicación del ejecutable de PHP --En la mayoría de sistemas con Linux, la ubicación es en /usr/bin/php. Si tu no estás seguro, escribe which php y la respuesta es la ubicación de tu ejecutable de PHP.

Segundo, escribe el código de abajo, asegurandote de reemplazar /usr/bin/php con la ubicación actual de tu ejecutable de PHP.


#!/usr/bin/php -q
Hola Mundo


Guarda tu archivo y asegurate de que este marcado con privilegios de ejecución, en la mayoría de sistema, tu lo tendrás que hacer con chmod +x hola-mundo o algo similar. Luego, ejectuta el archivo PHP (escribiendo ./hola-mundo o , si es necesario php hola-mundo) y verifica si corre. Si lo hace, tu instalación de PHP incluye capacidades de la línea de comandos por defecto.

Si el código no corrió bien,las cosas pueden estar algo peliagudas. Pueden ser muchas las causas. Si tienes un error de PHP relacionado (que no sea algo como "programa no encontrado", entonces tu problema está en la escritura del código. Si el ejecutable del PHP no lo encuentra, asegurate de haber usado la correcta ruta. Si no tienes un ejecutable llamado PHP, lo deberías conseguir.

Tener un ejecutable de PHP puede tomar diferentes pasos dependiendo en que sistema te encuentras, pero no debería ser muy difícil tener el soporte que necesitas. Puedes comenzar rápidamente revisando la documentación de tu particular sistema operativo o distribución.

Obviamente, si no tienes PHP instalado en tu sistema hasta ahora, instalar PHP es todo lo que necesitas en la mayoría de sistemas. Si necesitas mas, a veces arreglar este problema es tan simple como usar tu gestor de paquetes favorito (como apt-get o yum) para tener el paquete de PHP CLI. (El nombre puede variar)

Si no puedes encontrar la línea de comandos para instalar PHP en el gestor de paquetes, el peor escenario es que tengas que recompilar PHP con --enable-cli . De hecho, hacer esto te da la ventaja de un sistema un poco mas optimizado y no sería una mala idea tampoco. De un modo u otro, no debería ser muy difícil tener el modo por el cual obtenerlo para empezar.

Por ahora, tu deberías haber conseguido correr tu script de HolaMundo, y la salida es la que probablemente estabas adivinando que sería. No voy a dañar el funcionamiento de ese script todavía, pero la mayoría se estará familiarizando a esos quienes trabajan con shell scripting y PHP. Por qué el primer script está hasta ahora funcionando sin problemas (eso esperamos!). Tomaremos un pequeño desvió de las aplicaciones de la verdadera interfaz de línea de comandos (command-line interface CLI) para ver una de las grandes razones por las cuales PHP en la línea de comandos es genial para todos los programadores de PHP: Debuggear
web

Debuggeando con PHP

Quizas, soy solo yo, pero a menudo he encontrado que debuggear programas CLI puede llegar a una pesadilla, especialmente cuando estas tratando con script endebidos de HTML, como Microsoft® Active Server Pages (ASP) o PHP. Puede ser difícil distinguir que precisamente significa un error en especifico, al usuario le puede ser difícil reproducirlo, y todo esto generalmente te saca de casillas.

Desafortunadamente, la mayoría de esto no es arreglado solo usando la línea de comandos, aunque un razonable e inteligente programador podría encontrar modo en los cuales CLI podría ayudar con esto (leyendo los datos de entrada de un archivo u otro programa) Sin embargo, CLI hace algo mucho mas fácil, encontrar los mensajes de error para que los puedas leer en primer lugar.

Para ver el valor de debuggear usando líneas de comandos, vamos a empezar con un PHP mal hecho


#!/usr/bin/php -q
NN<o>programes<?php mientras bebes(); ?<




Mientras algunos de los errores en este script son algo obvios con solo mirar el código, el código provee un buen ejemplo de la poca usabilidad de los mensajes de debugging en el navegador.Especificamente, no hacen un carajo, ejecutar el script en Apache simplemente no devolvería nada, Entonces, como puedes saber que ocurre en el caso de que el bug no sea tan obvio?

El modo tradicional de resolver este problema sería mirar los logs de error. Por ejemplo, ejecutarías

tail -f /var/log/httpd/error_log

antes de cargar la página en un sistema de Linux corriendo Apache 2, el cual devolvería algo como esto:


[client 127.0.0.1] PHP Parse error:  parse error, unexpected T_STRING, expecting 
    '(' in /var/www/html/no-programes-borracho.php on line 2


Probablemente estes de acuerdo conmigo al considerar está solución como poco factible. Por un lado, el archivo donde se guardan estos logs puede variar dependiendo tu sistema. Por otro, tienes que pasar a través de otros logs de eventos que no tienen nada que ver con lo que necesitas, lo cual puede ser una pesadilla en un live server

Debes estar pensando en este momento: Debe haber un modo mejor

PHP

Localizando y arreglando errores usando CLI


El problema con el código puede ser fácilmente aislado ejecutando directamente el script en el CLI
php no-programes-borracho.php

y terminará devolviendo lo siguiente:

PHP Parse error:  parse error, unexpected T_STRING, expecting 
    '(' in /var/www/html/no-programes-borracho.php on line 2
Content-type: text/html
X-Powered-By: PHP/4.3.11


Mucho Mejor! El mensaje de error está aislado de otros datos, y puedes fácilmente revisar la página cuando hayas hecho un cambio. En este caso, es claro que está esperando un '(' en algún lugar de la línea. El lugar de la frase donde dice mientras parece un lugar razonable para esto, entonces puedes añadir un nuevo set de paréntesis para tener el siguiente script:


#!/usr/bin/php -q
NN<o>programes<?php mientras (bebes()); ?<


Ahora, volviendo a ejecutar el script obtendremos:


Content-type: text/html
X-Powered-By: PHP/4.3.11

<o>codePHP Fatal error:  Call to undefined function:
    bebes() in /var/www/html/no-programes-borracho.php on line 2


El script sigue lleno de problemas, pero al menos hemos hecho algo de progreso. Has sacado el mensaje de error que necesitabas con gran facilidad,permitiendo rápidamente arreglar el problema en el programa e ir al siguiente problema.

Cualquiera que use PHP puede hacer buen uso de CLI PHP debuggeando de este modo. pero por qué no te extiendes un poco más a demás y haces scripts en PHP? . Anda y verás algunas de las posibilidades de usar PHP por simple -- o no tan simple -- shell scripting.

Command

PHP , Canales de E/S

El objetivo principal de tu primer script en PHP es simple: crea un script que lea un archivo y "organice" las lineas en ese archivo. Está función puede ayudar mucho si estas con un m3u o algo similar. Hacer esto significa que debes saber leer desde archivos o datos de entrada y escribirlos a la terminal.

Esto plantea un reto en general con PHP. PHP no fue originalmente diseñado para ser usado como entrada directa por teclado o salida de datos al usuario. Entender este diseño es critico por que si tu quieres tener algo hecho en la línea de comandos, debes saber comunicar al usuario. En programación tradicional lenguajes como C, tu usarías STDIN, STDOUT, y STDERR para satisfacer esto. Puedes usar los mismos canales en PHP para la entrada.

STDOUT: echo, print, STDOUT, y php://stdout


Aunque PHP fue diseñado para hacer outputs a un navegador antes que en CLI, crear un output de PHP es sencillo, solo toma un poco de tiempo en considerarlo. Recuerda que todo lo que este fuera de los tags de PHP saldrá directamente en el CLI, una de las razones por las que el HolaMundo de arriba fue tan fácil. No importa si lo pusiste con tags HTML, saldrá como lo escribiste, de hecho normalmente querras evitar el HTML para evitar esos inconvenientes.

Puedes usar funciones basicas para mostrar data. Por ejemplo, los comandos print y echo son los estandares para datos de salida.


#!/usr/bin/php -q
Output #1.
<?php echo "Output #2.";
print 
"Output #3."?>


Esto nos da:

Output #1.
Output #2.Output #3.


Notese que la línea fuera de los tags de PHP también es mostrada pero no hay un echo o un print implicado, cualquier otra función de impresión de datos funcionará igual,


#!/usr/bin/php -q
<?php
        $STDOUT 
fopen("php://stdout""w");
        
fwrite($STDOUT"Output #1.");
        
fclose($STDOUT);
?>

El código de arriba abre explicitamente php://stdout como canal de salida, y php://output generalmente actua de la misma manera que php://stdout . Recientes versiones de PHP usan como constante predefinida STDOUT en lugar de definir la variable $STDOUT como lo hice arriba.



STDERR: STDERR y php://stderr

STDERR cierra STDOUT paralelos. Todas las tecnicas que usaras para escribir en este canal se reflejaran en los STDOUT, la unica diferencia es que tu abres php://stderr en lugar de php://stdout o php://error


STDIN: STDIN y php://stdin

STDIN es el mas interesante cambio desde la programación por que permite que el usuario ingrese datos sin usar formularios u otros metodos browser-based. Intenta el siguiente comando:

#!/usr/bin/php -q
<?php
        $file 
file_get_contents("php://stdin""r");
        echo 
$file;
?>

Esto tendría que devolver todo lo ingresado. Sin embargo, no acepta argumentos esta vez.


español

Tu Primer Shell Script con PHP

Ok, .. acá viene la parte interesante. Tomando el simple conocimiento que has adquirido, puedes hacer un útil script. Escribe el código de abajo en tu editor de textos preferido:


#!/usr/bin/php -q
<?php
        $lineas
split("n"file_get_contents("php://stdin""r"));
        
shuffle($lineas);
        foreach (
$lineas as $linea) {
                if (
$linea !== "") {
                        echo 
"$linean";
                }
        }
?>



Solo unas cosas a tener en cuenta para que este script funcione como debería:

1- Asegurate de que en la primera línea este ajustada la ubicación de tu ejecutable PHP
2- Guarda el archivo
3- Usa chmod para darle privilegios de ejecución
4-Ejecuta el programa

El programa solo desorganiza las líneas escritas y las muestra obviamente en un diferente orden
Ahora, solo queda una cosa mas:

salida

Argumentos en Línea de Comandos


Verdaderos programas en líneas de comandos usaran argumentos. De nuevo, tal como en C y otros lenguajes similares, puede usar argv y argc para este proposito. Particularmente, argv es un array de argumentos para el programa, el primer argumento será el programa en si mismo. Usando esto, no será dificil hacer un programa que lea archivos o datos del usuario dependiendo de los argumentos dados. Por ejemplo, el siguiente código:

#!/usr/bin/php -q
<?php
        array_shift
($argv);
        if (
count($argv) == 0) {
                
$argv[0] = "php://stdin";
        }
        foreach (
$argv as $archivo) {
                
$lineas split("n"file_get_contents($archivo"r"));
                
shuffle($lineas);
                foreach (
$lineas as $linea) {
                        if (
$linea !== "") {
                                echo 
"$linean";
                        }
                }
        }
?>


Y alli lo tienen, un funcional script que lee o los datos ingresados por el usuario o una lista de archivos y desorganiza el relativo contenido de cada archivo.


line

Conclusión

Escoge la herramienta correcta para el trabajo, pero recuerda que la mejor herramienta a menudo no es la que esperabas. Dale una oportunidad a PHP en una interfaz de consola de comandos , y cuando menos lo esperes será tu herramienta favorita para trabajar con el shell-scripting. Te puede ahorrar muchas migrañas con tus servidores
Datos archivados del Taringa! original
63puntos
1,653visitas
2comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000
2 Comentarios archivados
Del Taringa! original
O@Otty_Guitarras5/13/2012+0-0
muy bueno... a favoritos
g@groundlee5/13/2012+1-0
Lo guardo en favoritos y lo leo después, si ve bueno ya te dejaré puntos después.

Autor del Post

e
esteban22x🇦🇷
Usuario
Puntos0
Posts15
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.