Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A execução do mysqldump a partir de um script PHP não funciona, mas funciona em SSH

Uma suposição educada


Se eu puder fazer um palpite, é porque o usuário que executa o script php (ou seja, o usuário em que o httpd é executado) não tem permissão para gravar em /var/www/vhosts/mydomain.com/httpdocs/tools/ .

Embora o usuário que você está usando para executar o comando tenha.

STDERR e STDOUT


Para ver se há algo impresso em STDERR que seja relevante para o problema, use o snippet abaixo!
$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!");
}

Verifique os arquivos de log!


Você verificou o error_log associado ao seu httpd ?