Обосновано предположение
Ако мога да направя обосновано предположение, това е защото потребителят, който изпълнява php-скрипта (т.е. потребителят, от който се изпълнява httpd), няма разрешение да пише в /var/www/vhosts/mydomain.com/httpdocs/tools/
.
Въпреки че потребителят, който използвате за изпълнение на командата, има.
STDERR
и STDOUT
За да видите дали има нещо отпечатано на STDERR
който е подходящ за проблема, използвайте фрагмента по-долу!
$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!");
}
Проверете регистрационните файлове!
Проверихте ли error_log
свързан с вашия httpd
?