mysqldump (usando PHP exec) não descartando arquivo mas sem erro

2

Eu não tinha certeza se era uma pergunta sobre SO ou SF, mas achei que esse seria o melhor lugar. Peço desculpas se não for!

Estou usando o mysqldump através do PHP exec, mas parece que não está funcionando. O código que estou usando é

<?php
exec('mysqldump -u DB_USER -pDB_PASS DB_NAME > /tmp/test.sql');
?>

Quando executo este script, não recebo erros no error_log, mas não obtenho um despejo em / tmp. Não tenho certeza do que está causando isso. Não tenho certeza se ele está tentando fazer o dump para / tmp em relação ao local onde o arquivo PHP está sendo executado, qual é o resultado que estou procurando ou está descarregando para um / tmp em outro lugar? Ou estou cometendo outro erro completamente?

    
por Syn 16.02.2016 / 10:43

2 respostas

3

A solução que encontrei é executar o comando em um sub-shell e, em seguida, gerar a saída stderr to stdout . Dessa forma, o $output é bem preenchido.

i.e. :

exec("(mysqldump -u$username -p$password $database $tables > $dump_name) 2>&1", $output, $result);

var_dump($result);
echo "<br />";
var_dump($output);
echo "<br />";

A saída:

int(6)

array(1) { [0]=> string(46) "mysqldump: Couldn't find table: "table_name"" }

Espero que ajude!

    
por 13.10.2016 / 12:18
1

O caminho que você declarou ( /tmp/test.sql ) é um caminho absoluto, portanto, o script está se comportando corretamente. Quanto ao sistema de arquivos linux / define o diretório raiz e sempre existe um diretório /tmp . Pode ser que você demore um pouco para entender Resumo geral do sistema de arquivos do Linux .

The tree of the file system starts at the trunk or slash, indicated by a forward slash (/). This directory, containing all underlying directories and files, is also called the root directory or "the root" of the file system.

Quanto a despejar o arquivo em um diretório relativo, você pode tentar usar ./tmp/test.sql ou tmp/test.sql , se o diretório tmp residir no diretório atual de onde o script é executado.

Você pode dar uma olhada nisto também: link

    
por 16.02.2016 / 11:24

Tags