样本备份脚本
试图运行一个简单的备份脚本,它只是打印错误消息。有什么我做错了吗?这是完整的代码。我在Linux上,并有完全访问数据库。样本备份脚本
只打印“有与您的系统的问题,从完成防止备份”
<?php
$dbhost = "localhost"; // usually localhost
$dbuser = "myuser";
$dbpass = "mypass";
$dbname = "mydb";
$sendto = "Webmaster <[email protected]>";
$sendfrom = "Automated Backup <[email protected]>";
$sendsubject = "Daily Mysql Backup";
$bodyofemail = "Here is the daily backup.";
$headers = 'My Shop <[email protected]>' . "\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('[email protected]','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';
}
?>
感谢您的帮助。
会有出错了命令:
mysqldump -h $dbhost -u $dbuser -p$dbpass $dbname > $backupfile
这看起来不错,但它是值得打印出来,这样就可以在命令行检查,看看有什么结果你得到的。
编辑: 看看这里提供的系统文档:system它看起来像这样会返回命令输出的最后一行。如果mysqldump运行成功,但不创建任何输出,则if
将返回false。可以使用:
if(system("mysqldump blah blah") === false){
或者使用return_var参数来检查系统状态码(成功时它应该为0)。
Ha应该只是给共享服务器上的监禁访问,看起来它正在备份,但电子邮件没有被触发,所以可能是什么问题? – 2012-04-23 16:26:56
将电子邮件代码输出到单独的脚本中并单独运行以调试问题。 – 2012-04-23 16:28:56
@HelenNeely我已经更新了我的答案。问题可能是if语句。 – Jim 2012-04-23 16:35:34
它打印的是什么错误信息:代码中的错误信息,还是别的/更低的层次? – 2012-04-23 16:14:10
它在我的代码中打印错误 – 2012-04-23 16:15:34
只要您知道,如果您在共享服务器上,那么如果您希望查看进程列表,您的MySQL密码将可用于该服务器上的每个其他用户。 – ceejayoz 2012-04-23 16:19:55