Cómo usar PHP desde la línea de comandos de Linux


PHP es un lenguaje de programación muy potente, intuitivo y fácil de utilizar. Además tiene gran cantidad de librerías desarrolladas de las que nos podemos aprovechar. Si eres administrador de sistemas y además tienes que realizar labores de administración de sistemas, estoy seguro que te encontrarás en multitud de situaciones donde utilizar PHP será la opción más rápida y comoda para llevar a cabo tus propósitos.
Por ejemplo, imagina que tienes que ejecutar una tarea diaria que involucre acceso a base de datos de una aplicación que está desarrollada en PHP y que dispone de su propia API, como por ejemplo Joomla. Además está tarea tiene que estar integrada dentro de una serie de shell scripts realizados ya, que funcionan bien y no quieres tener que reprogramarlos en PHP. Tienes 3 opciones, implementar las tareas dentro de otros shell scripts o scripts en perl, desaprovechando tus conocimientos de PHP y el API de Joomla, pasar tus scripts de shel Linux a PHP, lo que puede resultar una pérdida de tiempo si ya funcionan correctamente.. o la tercera y por la que me decanto, utilizar PHP desde la línea de comandos y crear un script de PHP que acepte los parámetros necesarios e invocarlo desde otros shell scripts o scripts en perl que ya tengamos implementados. Así que por todo esto vamos a ver como utilizar PHP en el CLI.

En Linux para saber que programa va a interpretar el código del script, se utiliza el shebang, que es una lína que se coloca al principio, que incorpora los caracteres #! seguidos del path al intérprete. Para saber cual es la ruta del interprete de PHP podemos utilizar los comandos

wich php
#o también
whereis php

Por ejemplo, nuestro script, en un SO CentOS, empezaría así:

#!/usr/bin/php

<?php
 #código del script PHP 
?>

Después la metodología de codificación es muy similar a la de cualquier script PHP desarrollado para ser ejecutado en Apache, con la diferencia de que ahora los parámetros los recibimos del Array $argv[] en lugar de utilizar los Arrays $_POST, $_GET o $_REQUEST. Deberemos de utilizar las marcas de PHP del mismo modo que en un script de CGI (&gt?php ?<) para que el intérprete de PHP ejecute el código. Por ejemplo, creamos un primer script de ejemplo con el nombre prueba.php y el siguiente código:

#!/usr/bin/php
<?php
print_r($argv); 
?>

Si lo invocamos de la siguiente forma, obtendremos la siguiente salida:

./prueba.php argumento1 argumento2

#Salida del comando:

Array
(
[0] => ./prueba.php
[1] => argumento1
[2] => argumento2
)

Como veis, es muy fácil acceder a los parámetros del script utilizando el array $argv, es una buena idea asignar las variables del array a variables con nombres más intuitivos para no liarnos después en la programación. La posición 0 del array $argv siempre contiene el nombre del script desde elq ue se llama, esto es algo habitual, el que haya programado shell script en Bash lo sabrá muy bien. Podemos utilizar la función array_shift($argv) para eliminar el primer parámetro o recorrer el array $argv con un while.

Realizar comprobaciones básicas
En la variable $argc se almacena un entero con el número de parámetros introducidos. Empleando este valor podemos hacer algunas comprobaciones básicas:

#!/usr/bin/php

if ($argc != 3) {
   die("Modo de empleo: prueba.php <num_usuarios> <bloquear> \n");
}

$num_usuarios = $argv[1];
$bloquear = $argv[2];

Comprobar que el valor de entrada es un valor numérico:

if (!is_numeric($param)){
 die("$param no es un número");
}

Acceso a las variables de entorno

Puedes acceder a las variables de entorno del sistema

putenv("EDITOR=/path/al/editor");
echo "Actualmente estás usando el editor por defecto: " . getenv('EDITOR') ;

El resto es cuestión de saber programar en PHP. Por ejemplo, podemos utilizar el API de Joomla si nos lo proponemos si lo incluimos como se indica en la documentación de Joomla.
En próximos artículos veremos algunas funciones muy útiles para emplear en nuestros scripts de CLI en PHP..

Compartir:
Share on facebook
Share on linkedin
Share on twitter
Share on whatsapp
Share on email
Abrir chat
¿Tienes alguna duda que podamos aclarar?