working shell_exec recursivo not ejemplos ejecutar desde consola comando php shell scripting

shell_exec - Ejecutando comandos de Linux con PHP



shell_exec not working (7)

Lo siguiente encaminará los mensajes de stderr al mismo lugar que la salida normal.

exec("mysql_dump blah 2>&1",$output,$return_val) if($return_val !== 0) echo "there was an error"

2> & 1 significa redirigir los mensajes de stderr al mismo lugar que stdout y, por lo tanto, se cargarán en la matriz de salida.

Estoy tratando de ejecutar un comando de Linux a través de un script de línea de comandos PHP, que no es un problema con el comando exec.

El problema es que el comando que estoy ejecutando (mysqldump) genera un mensaje de error si algo está mal (por ejemplo, el usuario / contraseña es incorrecto). Parece que no puedo capturar este error para registrarlo. Simplemente imprime este error en la pantalla.

¿Cómo hago que este error no se imprima en la pantalla, sino que lo coloque en una variable para usar en mi script?

¡Gracias!


Necesita redirigir stderr a stdout para que pueda capturarlo. Este ejemplo enruta stdout a devnull (ignorando así) y le envía stderr:

exec(''ls * 2>&1 1>/dev/null'');


No estoy demasiado caliente en Unix (Resolución de Año Nuevo ...) pero estas funciones parecen útiles:

  • shell_exec - devuelve el resultado como una cadena.
  • passthru - Parece que puedes ejecutar esto como: passthru(''command'', $result); y luego usa $result .

intenté usar apoyos?

$var = `command`;


exec("mysqldump -u user -p passwod database > outputfile.sql 2> error.log");


Use popen para ejecutar el proceso. El ejemplo 2 en esta página muestra exactamente lo que estás buscando:

<?php error_reporting(E_ALL); /* Add redirection so we can get stderr. */ $handle = popen(''/path/to/spooge 2>&1'', ''r''); echo "''$handle''; " . gettype($handle) . "/n"; $read = fread($handle, 2096); echo $read; pclose($handle); ?>


¿Has mirado el comando system () ? Ha pasado un tiempo desde que hice PHP, pero eso me suena.