2012-04-23 10 views
0

Пытается запустить простой сценарий резервного копирования, и это только сообщение об ошибке печати. Есть ли что-то, что я делаю неправильно? Вот полный код. Я на 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'; 
    } 
?> 

Спасибо за вашу помощь.

+0

Какое сообщение об ошибке оно печатает: одно в вашем коде или что-то еще/более низкое? –

+0

Он печатает ошибку в моем коде –

+1

Просто чтобы вы знали, что если вы находитесь на общем сервере, ваш MySQL-пароль будет доступен для всех других пользователей на этом сервере, если они захотят посмотреть список процессов. – ceejayoz

ответ

0

Там будет что-то не так с вашей командой:

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

Это выглядит хорошо, но это стоит печать его, так что вы можете проверить его в командной строке, чтобы увидеть, какой результат вы получите.

Редактировать: Ознакомиться с системными документами можно здесь: system похоже, что это возвращает последнюю строку вывода команд. Если mysqldump работает успешно, но не создает никакого вывода, ваш if вернет false. Либо используйте:

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

или использовать return_var аргумент системы, чтобы проверить код состояния (оно должно быть 0 в случае успеха).

+0

Ха, похоже, что это резервное копирование, но письмо не запускается, так что может быть проблемой? –

+0

Возьмите код электронной почты в отдельный скрипт и запустите его самостоятельно, чтобы отладить проблему. –

+0

@HelenNeely Я обновил свой ответ. Проблема, вероятно, в выражении if. – Jim

Смежные вопросы