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
?