0

PHP経由でmysqlダンプを実行しようとしています。

これがコードです

$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;

$a = 2 の値ですが、意味がわかりません。また、バックアップファイルがどこにも見つかりません。

何か案は?

4

2 に答える 2

2

これが問題かどうかはわかりませんが、パスワードを渡すパラメーターが正しくないようです。

-p を使用する場合は、次のように、空白を入れずにパスワードをすぐ隣に置く必要があります。

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

または、長い --password=$dbpass を使用します。

例えば:

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

mysqldump の man ページから:

--password[=パスワード], -p[パスワード]

サーバーへの接続時に使用するパスワード。短いオプション形式 (-p) を使用する場合、オプションとパスワードの間にスペースを入れることはできません。コマンド ラインで --password または -p オプションの後にパスワード値を省略すると、パスワードの入力を求めるプロンプトが表示されます。

于 2009-04-20T08:02:22.070 に答える
0

バックアップの宛先になることもできます。mysqldump を実行しているユーザー (この場合はおそらく www-data または他の apache ユーザー) が、バックアップを書き込もうとしているディレクトリへの書き込み権限を持っていることを確認してください。多くの場合、コマンドラインからコマンドを試してみて、うまく動作することを確認します..しかし、私はルートまたはユーザーです..www-dataではありません.

于 2009-11-10T19:35:20.577 に答える