データベースのバックアップを作成して電子メールに送信するPHPスクリプトを毎日自動的に実行したいと思います。 WebブラウザでURLを呼び出して実行すると良いことがすべてあります。私は私のサーバーでcronジョブを定義するときしかし、私はこのエラーを得た:cronジョブでPHPスクリプトを実行する方法
sh: /Viana-BackupMailer/mehravar_news_20161204_192302.sql.gz: No such file or directory mysqldump: Got errno 32 on write X-Powered-By: PHP/5.4.45 Content-type: text/html
私はcronジョブでコマンドの下にこれを使用する:
php /home/mehravar/public_html/Viana-BackupMailer.php
と、これは私のPHPコードです:
<?php
$TimeZone = "Asia/Tehran"; // Your location time zone
$SiteName = "Mysite.com"; // Your site name
$SiteTitle = "My Site Title"; // Your site title
$DeleteBackup = false; // Delete Backup file after send it by email
$DB_Server = "localhost"; // MySQL server name
$DB_Name = "DB_Name"; // MySQL database name
$DB_Username = "DB_User"; // MySQL database Username
$DB_Password = "DB_Pass"; // MySQL database Password
$Mail_To = "[email protected]"; // Receiver email
$Mail_From = "[email protected]"; // Sender email (Your host email)
$LogText = "";
$StorageDir = "Viana-BackupMailer";
if(!is_dir($_SERVER['DOCUMENT_ROOT']."/".$StorageDir)){
mkdir($_SERVER['DOCUMENT_ROOT']."/".$StorageDir, 0755);
}
date_default_timezone_set($TimeZone);
$BackupDate = date("Ymd_His");
$LogDate = date("Ym");
$Path = $_SERVER["DOCUMENT_ROOT"]."/".$StorageDir."/";
$LogFile = $Path.$LogDate."_Viana-BackupMailer.log";
function WriteLog($LogText){
$Handle = fopen($GLOBALS['LogFile'], (file_exists($GLOBALS['LogFile'])) ? 'a' : 'w');
fwrite($Handle, " Viana-BackupMailer Log File \n");
fwrite($Handle, "================================================================================================\n");
fclose($Handle);
file_put_contents($GLOBALS['LogFile'], $LogText, FILE_APPEND | LOCK_EX);
}
$DB_BackupFile = ($DB_Name == "" ? "all_databases" : $DB_Name)."_$BackupDate.sql.gz";
$CMD = "mysqldump -u $DB_Username -h $DB_Server --password='$DB_Password' ".($DB_Name == "" ? "--all-databases" : $DB_Name)." | gzip > ".$Path.$DB_BackupFile;
passthru($CMD);
$LogText = date("[Y/m/d H:i:s] (").$DB_BackupFile.") Backup file was CREATED.";
WriteLog($LogText);
$Mail_Subject = "[$SiteName] Database Backup";
$Mail_Message = "\nYour database backup detail : \n";
$Mail_Message .= "----------------------------------------------------------\n";
$Mail_Message .= "You Site Name : $SiteName\n";
$Mail_Message .= "Your Site Title : $SiteTitle\n";
$Mail_Message .= "Your Database Name : ".($DB_Name == "" ? "All Databases" : $DB_Name)."\n";
$Mail_Message .= "Your Backup File : $DB_BackupFile\n";
$Mail_Message .= "----------------------------------------------------------\n";
$Mail_Message .= "Powered by Yousef Rahimy Akhondzadeh\n\n";
$AttachFile = $Path.$DB_BackupFile;
$AttachContent = file_get_contents($AttachFile);
$AttachContent = chunk_split(base64_encode($AttachContent));
$Separator = md5(time());
$EOL = "\r\n";
$MailHeader = "From: $Mail_From".$EOL;
$MailHeader .= "MIME-Version: 1.0".$EOL;
$MailHeader .= "Content-Type: multipart/mixed; boundary=\"".$Separator."\"".$EOL;
$MailHeader .= "Content-Transfer-Encoding: 7bit".$EOL;
$MailHeader .= "This is a MIME encoded message.".$EOL;
$MainBody = "--".$Separator.$EOL;
$MainBody .= "Content-Type: text/plain; charset=\"iso-8859-1\"".$EOL;
$MainBody .= "Content-Transfer-Encoding: 8bit".$EOL;
$MainBody .= $Mail_Message.$EOL;
$MainBody .= "--".$Separator.$EOL;
$MainBody .= "Content-Type: application/octet-stream; name=\"".$DB_BackupFile."\"".$EOL;
$MainBody .= "Content-Transfer-Encoding: base64".$EOL;
$MainBody .= "Content-Disposition: attachment".$EOL;
$MainBody .= $AttachContent.$EOL;
$MainBody .= "--".$Separator."--";
if (mail($Mail_To, $Mail_Subject, $MainBody, $MailHeader)){
if ($DeleteBackup) {
unlink($Path.$DB_BackupFile);
$LogText = date("[Y/m/d H:i:s] (").$DB_BackupFile.") Backup file was REMOVED from disk.\n";
WriteLog($LogText);
}
$LogText = date("[Y/m/d H:i:s] (").$DB_BackupFile.") Backup file was SENT to email.\n";
WriteLog($LogText);
}
else{
$LogText = date("[Y/m/d H:i:s]")."Error on sending email.\n";
WriteLog($LogText);
$LogText = date("[Y/m/d H:i:s]").error_get_last()."\n";
WriteLog($LogText);
}
?>
私を助けてください。おかげさまで
[mysqlデータのPHP定期バックアップ] stackoverflow.com/questions/38916163/php-regular-backup-of-mysql -データ) – e4c5