Pergunta

Eu estou tentando fazer um despejo mysql via php.

Este é o código

$backupFile = $table. "-". date("Y-m-d-H:i:s") . '.gz';
    //Command nog aanpassen....
    $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname  | gzip > $backupFile";
    //$status = system($command);
    echo $backupFile ."<br>";
    $status = passthru($command, $a);
    echo "output:" .  $a;

O valor de $ a = 2. Mas não consigo encontrar o que significa. Eu também não consigo encontrar a qualquer lugar do arquivo de backup.

Qualquer de idéia?

Foi útil?

Solução

Eu não tenho certeza se este é o problema, mas parece que sua senha passando parâmetro está incorreto.

Se você usar -p você precisa ter a senha bem próximo a ela, sem espaços, assim:

$command = "mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname  | gzip > $backupFile";

Ou utilize a longo --password = $ dbpass.

Por exemplo:

$command = "mysqldump --opt -h $dbhost -u $dbuser --password=$dbpass $dbname  | gzip > $backupFile";

A partir da página homem mysqldump:

- password [= senha], -p [senha]

A senha para usar ao conectar ao servidor. Se você usar o formulário de opção curta (-p), você não pode ter um espaço entre a opção ea senha. Se você omitir o valor da senha seguindo a opção --password ou -p na linha de comando, você será solicitado para um.

Outras dicas

Também poderia ser destino do seu backup. Certifique-se o usuário estiver executando mysqldump como (no seu caso www-data prováveis, ou algum outro usuário apache) tem permissão de gravação para o diretório onde você está tentando escrever seu backup. Muitas vezes eu vou tentar um comando a partir da linha de comando .. e vê-lo funcionar bem .. mas eu sou raiz, ou o meu utilizador .. não www-data.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top