एक शिक्षित अनुमान
अगर मैं एक शिक्षित अनुमान लगा सकता हूं तो ऐसा इसलिए है क्योंकि उपयोगकर्ता जो php-script चलाता है (यानी उपयोगकर्ता 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 . से संबद्ध ?