2010-11-29 16 views
2


dbとwnatをバックアップしてブラウザを実行するコマンドラインを持っています。私はそれを行うことができます。下のコードを入力と実行すると、出力が得られません。なぜですか?それがうまくいかない場合は、dbバックアップを達成してください。PHPとXamppを使用してブラウザでシステムコマンドを実行する方法は?

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

答えて

1

私はこれの一つがsystemまたはexec機能だと思います。あなたが出力に含まexecを必要とする場合のdoc

string exec (string $command [, array &$output [, int &$return_var ]]) 

と迅速なスニペット

exec($command, $output, $ret_var); 
echo "return code: {$ret_var}" . PHP_EOL; 
echo "output ------" . PHP_EOL; 
foreach($output as $line){ 
    print $line . PHP_EOL; 
} 
+0

私はそれを試しました。私はあなたのコーディングを更新しました。何も印刷されません。 – svk

+0

@vinothkumar:結果を得ることができないのはどういう意味ですか? – RageZ

+0

期待される出力は、データベースのzipファイルです。私はdidntをput.Thatsなぜ私は(私は期待した結果を得るdidnt)を置く。 – svk

0

から関数シグネチャちょうどあなたの参照のための

system($command) 

方が良いEigther mysqladminenglish version)かを使用しますあなた自身のページの1つでajax呼び出し(JavaScript経由)を使用することができます。

+0

シンプルにする方法はありますか?mysqladminのすべてのファイルをインストールして使用したいのではない – svk

+0

いいえ、部分的なバージョンはありません。 MyasqladminはDBの可能性のあるすべての問題を解決するための無料のGUIです。 – Thariama

2

passthru()と同じように聞こえます。

the documentationによれば、コマンドの出力を直接ブラウザにダンプします。

$ret_val = null; 
header("Content-type: application/gzip"); 
passthru("mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip", $ret_code); 
# the extra equals sign below makes sure $ret_val isn't null 
if($ret_val !== 0) 
    echo "Failboat"; 

これは、バックアップを実行するのが本当に脆い方法のようです。最初にファイルをディスクに保存して別々にダウンロードする方が良いでしょう。あなたが実際にそれを使ってハッキーを取得したいのであれば、ファイルをディスクに書き込んで、そのファイルをブラウザにストリーミングしながら試してみてください(実際はさらに悪い考えです)。

+0

私は彼のバックアップページが本当に安全であることを願っています。私はデータベースダンプに直接アクセスするいくつかのランダムな人がいらないと思います... – RageZ

+0

@RageZ:agree。これはたぶん、尋ねられたものが本当に望んでいない時間の1つです – grncdr

+0

それはまた空のzipを返します。私は結果を得ませんでした – svk

関連する問題