Eine fundierte Vermutung
Wenn ich eine fundierte Vermutung anstellen kann, liegt es daran, dass der Benutzer, der das PHP-Skript ausführt (dh der Benutzer, unter dem httpd ausgeführt wird), keine Berechtigung zum Schreiben in /var/www/vhosts/mydomain.com/httpdocs/tools/
.
Der Benutzer, den Sie zum Ausführen des Befehls verwenden, hat jedoch.
STDERR
und STDOUT
Um zu sehen, ob etwas auf STDERR
gedruckt wird das für das Problem relevant ist, verwenden Sie das folgende Snippet!
$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!");
}
Überprüfen Sie die Protokolldateien!
Haben Sie das error_log
überprüft mit Ihrem httpd
verknüpft ?