Phỏng đoán có học
Nếu tôi có thể đưa ra một phỏng đoán có học thức thì đó là do người dùng chạy php-script (tức là người dùng mà httpd được chạy với tư cách) không có quyền ghi vào /var/www/vhosts/mydomain.com/httpdocs/tools/
.
Mặc dù người dùng bạn đang sử dụng để thực thi lệnh có.
STDERR
và STDOUT
Để xem có gì được in ra STDERR
không có liên quan đến vấn đề, hãy sử dụng đoạn mã dưới đây!
$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!");
}
Kiểm tra tệp nhật ký!
Bạn đã kiểm tra error_log
chưa được liên kết với httpd
của bạn ?