Mysql
 sql >> Base de données >  >> RDS >> Mysql

L'exécution de mysqldump à partir d'un script PHP ne fonctionne pas mais fonctionne sur SSH

Une supposition éclairée

Si je peux faire une supposition éclairée, c'est parce que l'utilisateur qui exécute le script php (c'est-à-dire l'utilisateur sous lequel httpd est exécuté) n'a pas l'autorisation d'écrire dans /var/www/vhosts/mydomain.com/httpdocs/tools/ .

Bien que l'utilisateur que vous utilisez pour exécuter la commande ait.

STDERR et STDOUT

Pour voir s'il y a quelque chose d'imprimé dans STDERR qui est pertinent pour le problème, utilisez l'extrait ci-dessous !

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

Vérifiez les fichiers journaux !

Avez-vous vérifié le error_log associé à votre httpd ?