sql >> Base de Datos >  >> RDS >> Mysql

Ejecutar mysqldump desde un script PHP no funciona pero funciona en SSH

Una conjetura educada

Si puedo hacer una conjetura, es porque el usuario que ejecuta el script php (es decir, el usuario con el que se ejecuta httpd) no tiene permiso para escribir en /var/www/vhosts/mydomain.com/httpdocs/tools/ .

Aunque el usuario que está utilizando para ejecutar el comando tiene.

STDERR y STDOUT

Para ver si hay algo impreso en STDERR que sea relevante para el problema, ¡utilice el siguiente fragmento!

$tubes = array(
  0 => array("pipe", "r"),
  // print contents on STDOUT to file
  1 => array("file", "/var/www/vhosts/mydomain.com/httpdocs/tools/dbbackup-2011-12-17.sql", "w"),
  2 => array("pipe", "w")
);

$p_handle = proc_open (
  "/usr/bin/mysqldump --opt --host=localhost --user=\"myuser\" --password=\"mypass\" db_name",
  $tubes, $pipes
);

if (is_resource ($p_handle)) {
    fclose ($pipes[0]);

    $stderr_data = stream_get_contents ($pipes[2]); fclose($pipes[2]);

    $proc_ret    = proc_close ($p_handle);

    echo "--------- STDERR:\n$stderr_data\n";
    echo "------------ RET: $proc_ret\n";
} else {
  die ("Unable to execute external resource, aborting!");
}

¡Comprueba los archivos de registro!

¿Has revisado el error_log? asociado con su httpd ?