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 成功运行但没有创建任何输出,您if将返回 false。要么使用:

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

或者使用 system 的 return_var 参数来检查状态码(成功时应该为 0)。

于 2012-04-23T16:18:29.927 回答