MySQL backup and email

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
-NM-
Forum Newbie
Posts: 1
Joined: Fri Apr 17, 2009 6:00 pm

MySQL backup and email

Post by -NM- »

I am trying to get a mysql backup and email script to work, but i'm having some trouble.

Here is the script:

Code: Select all

<?
$datestamp = date("Y-m-d");      // Current date to append to filename of backup file in format of YYYY-MM-DD
 
/* CONFIGURE THE FOLLOWING SEVEN VARIABLES TO MATCH YOUR SETUP */
 
$dbuser = "***;            // Database username
$dbpwd = "***";            // Database password
$dbname = "--all-databases";            // Database name. Use --all-databases if you have more than one
$filename= "backup-$datestamp.sql";   // The name (and optionally path) of the dump file
$to = "system@connwarwicker.co.uk";      // Email address to send dump file to
$from = "system@connwarwicker.co.uk";      // Email address message will show as coming from.
$subject = "MySQL backup file";      // Subject of email
 
$command = "mysqldump -u $dbuser --password=$dbpwd $dbname | gzip > $filename";
$result = passthru($command);
 
$attachmentname = array_pop(explode("/", $filename));   // If a path was included, strip it out for the attachment name
 
$message = "Compressed database backup file $attachmentname attached.";
$mime_boundary = "<<<:" . md5(time());
$data = chunk_split(base64_encode(implode("", file($filename))));
 
$headers = "From: $from\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/mixed;\r\n";
$headers .= " boundary=\"".$mime_boundary."\"\r\n";
 
$content = "This is a multi-part message in MIME format.\r\n\r\n";
$content.= "--".$mime_boundary."\r\n";
$content.= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$content.= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$content.= $message."\r\n";
$content.= "--".$mime_boundary."\r\n";
$content.= "Content-Disposition: attachment;\r\n";
$content.= "Content-Type: Application/Octet-Stream; name=\"$attachmentname\"\r\n";
$content.= "Content-Transfer-Encoding: base64\r\n\r\n";
$content.= $data."\r\n";
$content.= "--" . $mime_boundary . "\r\n";
 
mail($to, $subject, $content, $headers);
 
unlink($filename);   //delete the backup file from the server
?>
It sends me the email with the file attached, but the file is always empty. Can anyone see where i am going wrong? Thank you.
Post Reply