WordPress-Update: Fatal error: Allowed memory size exhausted

Ich habe es nun endlich geschafft, mein WordPress von einer 2.8er Version auf die aktuelle 2.9er Version automatisch zu updaten. Dies schlug ständig fehl, weil anscheinend nicht genügend Speicher für den Update-Prozess zur Verfügung stand.

Es kam immer diese Meldung:

Fatal error: Allowed memory size of xxxx bytes exhausted

Anscheinend wurde bei der 2.9er Versionslinie hier einiges verändert, denn früher ging dieser automatische Updateprozess immer easy von der Hand.

Wie dem auch sei, es gibt verschiedene Lösungsansätze, welche vom verwendeten Hoster abhängen. Hat man Zugriff auf die php.ini, so kann man direkt in dieser Datei folgenden Code hinzufügen bzw. ändern:

memory_limit = 32M;

Sollte dieser Wert nicht langen, einfach erhöhen.

Sollte man keinen Zugriff auf die php.ini haben, so kann man diese Werte auch in der wp-config.php an oberster Stelle nach dem eintragen.

Entweder

@ini_set("memory_limit",'32M');

oder (dies ging dann schließlich bei mir)

define('WP_MEMORY_LIMIT', '32M');

Ich musste sogar auf 48MB hochgehen bis es klappte.

Sollte auch das alles nicht funktionieren, hilft es evtl. einige speicherhungrige Plugins zu deaktivieren, bis genügend Speicherplatz zur Verfügung steht.

MySQL-Datenbank automatisch sichern und per Email versenden

Jeder, der mal eine Datenbank durch einen Crash oder durch eine Programmier-Unachtsamkeit verloren hat und keine Sicherung hatte, weiss wie schlimm das sein kann. Alles ist weg.

Dabei kann man sich sehr einfach vor solch einem Totalverlust schützen. Man lässt sich einfach in bestimmten Intervallen eine Sicherung der Datenbank per Email zuschicken. In Zeiten von Webmail-Diensten mit viel Speicherplatz wie “Google Mail” hat man hier zudem noch einen zusätzlichen Sicherungsfaktor.

Ich habe mir heute mal ein kleines Script geschrieben, mit dem man sich per Email den Inhalt einer Datenbank zuschicken lassen kann:

";

/* Systemcall */
system("/usr/bin/mysqldump -u".$dbuser." -p".$dbpw." -h ".$dbhost." ".$db." | /bin/gzip > ".$file, $fp);

if ($fp==0) echo "Dump generated"; else die("Ooops. An error occured!");

/* Prepare the email*/
$boundary 	= strtoupper(md5(uniqid(time())));
$mail_header  	= "From:".$from."\n";
$mail_header 	.= "MIME-Version: 1.0";
$mail_header 	.= "\nContent-Type: multipart/mixed; boundary=".$boundary;
$mail_header 	.= "\n\nThis is a multi-part message in MIME format  --  Dies ist eine mehrteilige Nachricht im MIME-Format";
$mail_header 	.= "\n--".$boundary;
$mail_header 	.= "\nContent-Type: text/plain";
$mail_header 	.= "\nContent-Transfer-Encoding: 8bit";
$mail_header 	.= "\n\n".$message;
$file_content	 = fread(fopen($file,"r"),filesize($file));
$file_content	 = chunk_split(base64_encode($file_content));
$mail_header 	.= "\n--".$boundary;
$mail_header 	.= "\nContent-Type: application/octetstream; name=\"".$file."\"";
$mail_header 	.= "\nContent-Transfer-Encoding: base64";
$mail_header 	.= "\nContent-Disposition: attachment; filename=\"".$file."\"";
$mail_header 	.= "\n\n".$file_content;
$mail_header 	.= "\n--".$boundary."--";

/* Send the email */
mail($to,$subject,"",$mail_header);

?>

Den obigen Text kopiert man mit einem beliebigen Texteditor in eine neue Datei und speichert diese in einem (vornehmlich) geschützten Bereich (z. B. mail_backup.php) auf dem eigenen Webserver. Ruft man nun das Skript auf wird die Datenbank gesichert und dann automatisch an die gewünschte Email-Adresse geschickt.

Wenn man ein Hosting-Paket hat, mit dem man Crons verwalten kann, so kann man sich beispielsweise jeden Sonntag einen Backup schicken lassen — oder auch jeden Tag. Sollte man keinen Zugriff auf Crons haben, so kann man auch einen Dienst im Internet benutzen (z.B. Cron-Server).

Schneller nachschlagen mit AJAX

Für diejenigen, die desöfteren Syntax nachschauen müssen, ist diese kleine Seite interessant (basierend auf AJAX):

Sidebar

Damit kann man recht schnell PHP und CSS und auch bald MySQL und Javascript – Syntax nachschlagen.

Am sinnvollsten ist dieser “Quick Lookup”, wenn man ihn in die Sidebar verfrachtet. Wie das geht ist auf der Seite beschrieben.

➡ Quick Lookup