Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Das Ausführen von mysqldump über ein PHP-Skript funktioniert nicht, funktioniert aber mit SSH

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 ?