Ejecución de programas externos y scripting

Es posible desde PHP invocar a un programa externo de forma tal de utilizar algún script externo para obtener resultados que luego sean utilizados en un script php.

string=escapeshellcmd(string)

Escapea todos los caracteres que puedan resultar peligrosos en un comando que va a pasarse al shell. En varias ocasiones un cierto input ingresado por el usuario es pasado a un programa externo para cumplir una determinada función. Supongamos que el usuario ingresa un nombre y password y un script php debe pasarle esos datos a un programa externo para cierta validación.

El comando podría ser:

$comando=”/usr/bin/validator $user $password”;

Pero que pasa si el usuario ingresa como password: “pepe;rm – rf /*”; Entonces el comando quedaría:

“/usr/bin/validator nombre pepe;rm –rf/*””

Y al ejecutarse además de hacer lo que el script debe hacer el shell eliminara todos los archivos del disco (ugh!), la función escapeshellcmd evita esto anulando todos los casos peligrosos para la llamada a un comando.

Las funciones de ejecución de comandos son:

string=exec(command, array, var);

Los dos últimos parámetros son opcionales. Ejecuta un comando pasándoselo al shell y devuelve la última línea devuelta por el comando en su standard otuput, si se pasa un nombre de vector como segundo parámetro devuelve cada línea de salida del comando en un elemento del vector. Si se pasa una variable como tercer parámetro devuelve alli el resultado del comando al shell.

passthru(command,var);

La variable es opcional y recibe el valor de retorno del comando, passthru ejecuta el comando y redirecciona su salida al browser en forma directa. Esto es útil por ejemplo para programas externos que generan una imagen o algo similar (antes hay que enviar el header correspondiente).

Fuente: Documento Generación de web sites dinámicos usando PHP