sql >> Database teknologi >  >> RDS >> Mysql

At køre mysqldump fra et PHP-script virker ikke, men virker på SSH

Et kvalificeret gæt

Hvis jeg kan komme med et kvalificeret gæt, er det fordi brugeren der kører php-scriptet (dvs. brugeren httpd køres som) ikke har tilladelse til at skrive til /var/www/vhosts/mydomain.com/httpdocs/tools/ .

Selvom den bruger, du bruger til at udføre kommandoen, har.

STDERR og STDOUT

For at se, om der er udskrevet noget til STDERR der er relevant for problemet, brug nedenstående uddrag!

$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!");
}

Tjek logfilerne!

Har du tjekket error_log knyttet til din httpd ?




  1. mangler nøgleordsfejl i oracle CASE WHEN sql-sætning

  2. Strategier for en-til-mange type foreninger, hvor mange sideposter er i millioner

  3. Indre slutte sig til hvis udsagn, gruppe

  4. 4 måder at finde rækker, der indeholder små bogstaver i MariaDB