0

単純なバックアップスクリプトを実行しようとすると、エラーメッセージが出力されるだけです。私が間違っていることはありますか?これが完全なコードです。私はLinuxを使用しており、データベースへのフルアクセス権を持っています。

「システムに問題があり、バックアップを完了できませんでした」と表示されるだけです。

<?php
$dbhost = "localhost"; // usually localhost
$dbuser = "myuser";
$dbpass = "mypass";
$dbname = "mydb";
$sendto = "Webmaster <webmaster@mydomain.com>";
$sendfrom = "Automated Backup <info@mydomain.com>";
$sendsubject = "Daily Mysql Backup";
$bodyofemail = "Here is the daily backup.";


$headers = 'My Shop <myname@mydomain.com>' . "\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";

$backupfile = $dbname . date("Y-m-d") . '.sql';

if(system("mysqldump -h $dbhost -u $dbuser -p$dbpass $dbname > $backupfile")){
   mail('receiver@yahoo.com','Back Up Service','Back Up successfully completed',$headers );
      echo'Back up saved successfully.';
  }else {
    echo'There was an issue with your system that prevented the backup from completing';
   }
?>

ご協力いただきありがとうございます。

4

1 に答える 1

0

コマンドに何か問題があります:

mysqldump -h $dbhost -u $dbuser -p$dbpass $dbname > $backupfile

これは問題ないように見えますが、コマンドラインで確認してどのような結果が得られるかを確認できるように、印刷する価値があります。

編集:ここで利用可能なシステムドキュメントを見る:システムこれはコマンド出力の最後の行を返すように見えます。mysqldumpが正常に実行されても出力が作成されない場合は、 iffalseが返されます。次のいずれかを使用します。

if(system("mysqldump blah blah") === false){

または、システムへのreturn_var引数を使用して、ステータスコードを確認します(成功した場合は0である必要があります)。

于 2012-04-23T16:18:29.927 に答える