Ejecutar el comando shell en php usando exec

Ejecutar el comando shell en php usando exec

El script PHP se utiliza principalmente para desarrollar aplicaciones web, pero también se puede utilizar para otros fines. PHP tiene algunas funciones incorporadas para ejecutar comandos relacionados con el sistema. exec () es uno de ellos. Se utiliza para ejecutar comandos de shell o cualquier programa del script php. Cómo se puede usar esta función en PHP se muestra en este tutorial.

Sintaxis:

String Exec (String $ command [, Array & $ output [, int & $ return_var]])

Esta función puede tomar tres argumentos. El primer argumento es obligatorio que tomará el comando del sistema. Los otros dos argumentos son opcionales. El segundo argumento se utiliza para almacenar la salida del comando en una matriz. El tercer argumento de esta función se utiliza para almacenar el estado de retorno del comando ejecutado. Esta función devuelve la última línea desde la salida del comando ejecutada.

Ejemplo-1: uso de la función exec () sin argumentos opcionales

El uso básico de la función exec () se ha mostrado en este tutorial. Cree un archivo PHP con el siguiente script para saber cómo la función EXEC () devuelve la salida del comando. 'pwd'El comando se ha utilizado en el comando exec () del script que devuelve una línea de salida. 'ls -la'El comando se ha utilizado en el segundo comando Exec () que puede devolver varias líneas de salida. Si algún comando devuelve varias líneas, la salida mostrará la última línea como la salida.

// almacenar la salida del comando ejecutado
$ output1 = exec ('pwd');
// imprime el valor de retorno
echo $ output1;
eco "
";
// almacenar la última línea del comando ejecutado
$ output2 = exec ('ls -la');
// imprime el valor de retorno
echo $ output2;
?>

Producción:

La siguiente salida aparecerá después de ejecutar el script anterior desde el servidor. 'pwd'El comando devuelve el directorio de trabajo actual como salida que se muestra en la primera salida. 'ls -la'El comando Devuelve la información de detalles de la lista de directorios y la segunda salida muestra la última línea desde la salida del comando.

Ejemplo-2: Imprima todos los valores del comando ejecutado

En el ejemplo anterior, no se usa ningún argumento opcional en la función EXEC (). El siguiente ejemplo muestra el uso de argumentos opcionales de la función exec (). Cree un archivo PHP con el siguiente script. Se utilizan dos argumentos opcionales de Exec () en este script. 'LS -L'El comando se usa en el primer argumento que devuelve la lista de directorios. $ salida La variable se usa aquí para almacenar la salida del comando en una matriz. $ estado La variable se utiliza para almacenar el valor de estado de retorno del comando ejecutado. La salida del comando se imprimirá como una matriz y cada valor de la matriz de salida se imprimirá utilizando el bucle 'for'.

// almacenar la salida del comando ejecutado en una matriz
exec ('ls -l', $ salida, $ status);
// Imprima todos los valores de retorno del comando ejecutado como matriz
print_r ($ output);
eco "
";
// imprima la salida del comando ejecutado en cada línea
foreach ($ salida como valor $)

Echo $ valor."
";

// Imprima el estado de retorno del comando ejecutado
Echo $ Status;
?>

Producción:

La siguiente salida aparecerá después de ejecutar el script anterior desde el servidor. La salida muestra la matriz que contiene la salida del comando, 'ls -l' y cada valor de la matriz en cada línea.

Ejemplo-3: Imprima todos los archivos PHP del directorio actual

El siguiente ejemplo muestra la lista de todos los archivos PHP del directorio actual utilizando la función Exec (). Aquí el 'LS -L *.php'El comando se usa aquí para encontrar la lista de todos los archivos PHP del directorio actual.

 La etiqueta se usa en el script para imprimir el contenido de la matriz con el formato estructurado.

// almacenar la salida del comando ejecutado en una matriz
ejecutora ('ls -l *.php ', $ output);
// imprima la salida del comando ejecutado
eco "
";
print_r ($ output);
eco "
";
?>

Producción:

La siguiente salida aparecerá después de ejecutar el script anterior desde el servidor.

Ejemplo-4: ejecute un script bash

Cómo se puede ejecutar cualquier script bash utilizando la función exec () se ha mostrado en este ejemplo. Crear un archivo bash llamado bucle.mierda con el siguiente script que imprimirá todos los números pares de 1 a 20.

bucle.mierda

#!/bin/bash

#Inicializa el mostrador

contador = 1
#Iterate el bucle hasta que el valor de $ contador sea menor o igual a 20

Mientras que [$ Counter -le 20]
hacer
#Imprimir los números uniformes

Si [[$ contador%2 -eq 0]]
entonces
#Print $ contador sin Newline

echo "$ contador"
FI
#Increment $ contador por 1

((contador ++))
hecho

Cree un archivo PHP con el siguiente script para ejecutar el script bash. 'bucle de bash.mierda'se usa como el primer argumento de la función exec () que ejecutará el bucle.mierda archivo de comandos. 'para cada'Loop se usa para imprimir cada valor del $ salida con espacio.

// Ejecute el script bash
exec ('bash bucle.sh ', $ output);
echo "Todos los números pares dentro de 1-20 son:
";
// imprime el ourput usando bucle
foreach ($ salida como valor $)

Echo $ valor."";

?>

Producción:

La siguiente salida aparecerá después de ejecutar el script anterior desde el servidor. La salida muestra todos los números pares dentro de 1 a 20.

Ejemplo-5: ejecutar el comando 'dir' usando la función exec ()

El comando 'dir' funciona como el comando 'ls'. El siguiente ejemplo muestra cómo se puede ejecutar el comando 'dir' utilizando un script php. Cree un archivo PHP con el siguiente script que almacena la salida del comando 'Dir' en la matriz nombrada $ salida y el valor de estado en la variable nombrada $ devolución. función var_dump () se usa aquí para imprimir la estructura del $ salida matriz con la información del tipo de datos.

// Ejecutar el comando 'dir'
exec ("Dir", $ Output, $ return);
// imprime el valor de estado de retorno
echo "El valor de retorno del comando 'dir' es $ return \ n";
eco "
";
// imprime la salida del comando
var_dump ($ output);
eco "
";
?>

Producción:

La siguiente salida aparecerá después de ejecutar el script anterior desde el servidor.

Conclusión:

Se han explicado en este tutorial diferentes usos de la función exec () para ayudar a los codificadores de PHP a conocer la forma de ejecutar el comando shell utilizando el script PHP. Algunas otras funciones también existen en PHP para hacer el mismo tipo de tarea.