Invocar comando de Windows desde PHP con exec

PHP: ejecutar un comando del sistema

En este post te mostraré cómo ejecutar un comando desde PHP como si lo estuviéramos invocando desde la terminal, a través de exec.

Esto va a funcionar en Windows y Linux. Vamos a ver cómo ejecutar un comando, obtener su salida y su código de salida.

Sobre exec

Esta función nos permite invocar a un comando desde PHP. Recuerda que debes tener cuidado si los argumentos son proporcionados por el usuario, y para ello deberías usar escapeshellarg.

Pero bueno, veamos. La sintaxis de exec es:

exec(comando, salidaDelComando, codigoDeSalida);

De modo que como primer argumento recibe el comando que se va a ejecutar, y después le estamos indicando las variables en donde se pondrá la salida del comando y el código del mismo, en ese orden.

Por cierto, la salida del comando será un arreglo en donde cada elemento será una línea de la salida.

Ejemplo de exec con PHP

Veamos un primer ejemplo. En este caso vamos a listar los archivos en el directorio actual. Primero con Linux, para ese caso usamos el comando ls y el código queda así:

Y la salida la vemos a continuación:

Ejecutar comando con PHP usando exec en Linux
Ejecutar comando con PHP usando exec en Linux

Como puedes ver, estamos obteniendo la salida correctamente (si bien no es exactamente la misma, eso puede ser porque ls no es tan predecible y se supone que deberíamos usar find, pero bueno, ese no es el punto).

Ahora en Windows solo cambiaría el comando, que sería dir:

Y la salida igualmente sería correcta. En este caso dir se comporta de manera idéntica ya sea desde PHP o desde la línea de comandos. Te repito que en el ejemplo anterior fue porque ls es un poco raro y no puedo exponer todo en este post, ya que no es el punto.

Invocar comando de Windows desde PHP con exec
Invocar comando de Windows desde PHP con exec

En este caso solo estamos invocando un comando desde PHP para listar los archivos del directorio actual, pero puede ser cualquier programa y cualquier comando.

Nota: en los ejemplos estoy ejecutando PHP desde un archivo. Esto no es obligatorio, ya que el código debería funcionar desde Apache u otro medio.

Nota 2: Obviamente el comando puede llevar argumentos, no se limita a una sola palabra.

La importancia del código de salida

Todos los programas (o los que están bien programados) deberían salir con un código de salida 0. Podemos usar este código de salida para ver si el comando fue ejecutado correctamente.

Veamos este ejemplo en donde el comando (dirs, y no dir) ni siquiera existe. Hay muchos códigos de salida, pero el 0 es el único que indica algo exitoso.

Al ejecutarlo, tenemos lo siguiente:

Código de salida al ejecutar comando en PHP
Código de salida al ejecutar comando en PHP

En este caso no imprimimos la salida, ya que el código fue 1. De este modo podemos detectar errores, ya que aunque el programa exista, si hay un error, el código de salida no será 0.

Y así es como podemos invocar a comandos de la terminal desde PHP, ya sea en Windows o Linux.

Recuerda que si tienes problemas debes verificar que el programa sea accesible desde PHP, tengas los permisos necesarios, no haya problemas de rutas, etcétera.

Para terminar te dejo con más tutoriales de programación en PHP.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

1 comentario en “PHP: ejecutar un comando del sistema”

Dejar un comentario