En välgrundad gissning
Om jag kan göra en kvalificerad gissning beror det på att användaren som kör php-skriptet (dvs användaren som httpd körs som) inte har behörighet att skriva till /var/www/vhosts/mydomain.com/httpdocs/tools/
.
Även om användaren du använder för att utföra kommandot har.
STDERR
och STDOUT
För att se om det finns något utskrivet till STDERR
som är relevant för problemet, använd utdraget nedan!
$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!");
}
Kontrollera loggfilerna!
Har du kollat error_log
kopplat till din httpd
?