sql >> Databasteknik >  >> RDS >> Mysql

Att köra mysqldump från ett PHP-skript fungerar inte men fungerar på SSH

En välgrundad gissning

Om jag kan göra en kvalificerad gissning beror det på att användaren som kör php-skriptet (dvs användaren som httpd körs som) inte har behörighet att skriva till /var/www/vhosts/mydomain.com/httpdocs/tools/ .

Även om användaren du använder för att utföra kommandot har.

STDERR och STDOUT

För att se om det finns något utskrivet till STDERR som är relevant för problemet, använd utdraget nedan!

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

Kontrollera loggfilerna!

Har du kollat ​​error_log kopplat till din httpd ?




  1. Generera enheter från databasen

  2. SQL-problem:Att använda CONTAINS() fungerar inte, men LIKE fungerar bra

  3. Hur väljer GROUP BY DESC sin beställning?

  4. SQL för att automatiskt generera saknade datum och pris från omedelbart föregående datum för saknat datum i tabellen