Internal Error 500 bei Blogs

Ursachen zum Fehler Internal Error 500

Immer noch kann es vorkommen, dass ein Blog auf einen Fehler „Internal (Server) Error (500)“ läuft, ohne dass man die Ursache gleich erkennen kann. Dieser Artikel will anfangen, welcher Fehler hier vorliegen kann und was dagegen unternommen werden kann.

Der Fehler

Beim Auftreten des Fehlers ist meist eine lange Zeit zu warten, bis eine Seite auf einen Klick reagiert. Die Fehlermeldung lautet:

error 500

1. Analyse

Dieser Fehler kann zum Teil auftreten

  • nach der Installation eines Blogs
  • nach dem Import von Plugins
  • plötzlich, ohne dass man selbst Änderungen am Blog gemacht hat
  • ….

Wie eine Suche im Logfile der Seite zeigt, wird dort folgender Fehler eingetragen:
Premature end of script headers: index.php
Also ein vorzeitiger Fehler, der vor Ende des Scripts aufgetreten ist.

 

Eine Suche nach diesem Fehler ergibt eine Menge von Treffern, die alle auf einen Fehler in dem Speicherbedarf des Blogs hinauslaufen. Aber was kann getan werden? Dies wird aus all diesen Seiten nicht so ganz klar.

Datensammlung

Also bleibt nur, dem Fehler irgendwie auf die Spur zu kommen.
Der Fehler hat also was mit dem Speicherplatz im Hauptspeicher zu tun, das wird aus den Seiten klar. Nun dafür gibt es jetzt einige Analysemöglichkeiten.

  1. Wieviel Hauptspeicher wird dem Blog eigentlich zur Verfügung gestellt?
  2. Wieviel Hauptspeicher meint der Blog eigentlich zu haben? Sprich: Da die WP-Software ja in PHP programmiert ist, von wieviel Hauptspeicherplatz geht der PHP Compiler aus, den er hat?

Punkt 1 ist eigentlich schnell zu ermitteln. Es gibt einen PlugIn für einen WP-Blog, den Sie einspielen können und dieser gibt Ihnen die Information wie viel Hauptspeicher dem Blog-Programm zur Verfügung steht. Diesen PlugIn finden Sie unter folgender Adresse
linkhttp://wordpress.org/plugins/wp-memory-usage/
Wenn der PlugIn richtig installiert ist, wird im Dashboard des Admin-Teils des Blogs in etwa folgende Rubrik eingeblendet:

error 500 Plugin

Punkt 2 ist schon ein wenig schwieriger zu ermitteln. Dazu muss man ein wenig tiefer einsteigen. Die Frage, was das PHP-Programm des Blogs annimmt, wie viel Speicher ihm zur Verfügung steht, ist nur über die Parameter des unterliegenden (sprich: auf Ihrem Server laufenden PHP) zu ermitteln.
Ein PHP Programm bei Provider läuft auf einem Server, meist ist es ein Apache-Server. In den Parametern dieses Servers kann man auch einiges einstellen, sowohl für den Server als auch für den PHP-Compiler! Wie kommt man nun an diese Parameter, die der PHP-Compiler auf Ihrem Webspace hat? Dazu muss man ein PHP-Programm schreiben.
Keine Angst, Sie können sich das Programm hier herunterladen und auf Ihren Webspace einstellen. Das Programm ist unheimlich kompliziert! Es hat folgendes Aussehen:

<?PHP
phpinfo();
?>

Entpacken Sie die zip-Datei nach dem Runterladen und stellen sie das Programm phpinfo.php in das Rootverzeichnis Ihres Blogs. Danach können sie mit http://<myBlog>/phpinfo.php das Programm aufrufen und Sie sehen die Parameter, die Ihr Provider für Sie für den PHP-Compiler eingestellt hat.

weitere Analyse

Sie sehen also im obigen Bild, dass der Blog hier 128 MBytes Hauptspeicher (Memory limit) hat. Die weiteren Angaben sind nicht so unbedingt interessant, weil sie eine Momentaufnahme darstellen. Im Moment braucht der Blog nur 33.3 MBytes Hauptspeicher, wenn also eine Aktivität gestartet würde, würde sich dieser Wert sofort verändern. Wichtig festzuhalten ist aber das Memory limit des Blogs.
Warum?
Nun, Ihr Blog läuft auf einem Server und dort meist unter einem Unix-Derivat. Bei Unix kann ich von außen vorgeben, wie viel Speicherplatz ein Prozess, wie Ihr Blog hat.
Klar ist, je mehr PlugIns Ihr Blog hat, je mehr Kommentare, je länger Ihre Artikel für eine Anzeige ist, etc., desto mehr Speicherplatz wird vom PHP-Programm des Blogs benötigt.

Kommen wir zur Ausgabe des phpinfo-Programms. Hier sehen sie alle Parameter, wie der PHP für Sie eingestellt wurde. Ja, die Liste ist lang, aber sehr aussagekräftig. Sie sehen u.a.
das Betriebssystem, das da läuft, aber auch weiter unten im CORE die Version des PHP-Complers und seine Parameter. Die wichtigen Anzeigen in unserem Fall sind:

  • max_execution_time    30
  • memory_limit    128MB

Vergleichen Sie nun mal die Angaben memory_limit und oben die Angaben im PlugIn. Haben Sie hier die gleichen oder vergleichbare Angaben?

Übrigens, es kann sein, dass die Angaben im Plugin zwar den Wert in MBytes angeben sollen, die Zahl aber so groß ist, dass sie unwahrscheinlich ist. Dann ist die Angabe nicht in MBytes sondern in Bytes. Das kann je nach Betriebssystem unterschiedlich sein. Falls hier also ein Zahl wie 268435456 MByte auftritt müssen Sie umrechnen.
268435456 / 1024 / 1024
wären dann die MBs, also hier nur 65 MB !

Wir hätten nun in unserem Fall folgende Situation. PHP meint es hat memory_limit=128MB, der PlugIn sagt, man hätte aber nur 65MB ! Jetzt stellen Sie sich vor, was passiert, wenn das PHP-Programm Speicher benötigt. Es fragt nach seiner Grenze und sagt sich, ich habe noch Platz, um den Speicher zu belegen, den ich brauche. Also fordert das Programm den Speicher an.
Da sagt aber das Betriebssystem „Ätsch, den Speicher bekommst Du nicht, du bist schon über 65MB!. PHP ist darüber sehr verwundert und sagt sich, da muss ein interner Fehler vorliegen, also breche ich mal ab und meine dazu Internal Error 500. Das Programm hat keine andere Wahl, denn es will ja nicht sich selbst oder seine Daten im Hauptspeicher überschreiben, verständlich, oder?

Was können Sie nun tun?

Da Sie an die Einstellungen des Servers normaler Weise nicht herankommen, es sei denn, sie haben einen Server gemietet, bleibt nur der Kontakt zu Ihrem Provider. Sie müssen ihm klar machen, dass Sie als Blogger mehr Speicherplatz benötigen, als der „Normalo“. Ein Blog läuft meist fehlerfrei, wenn Sie 128MB haben, 64MB sind echt zu wenig, was schon oft bemerkt werden musste.
Manche Provider haben deshalb auch umgestellt und gewähren Ihnen als Blogger automatisch mehr Speicher. Es gibt aber auch noch andere Provider, deshalb kann dieser Fehler auftreten. Man stellt sich im Support meist ahnungslos, weil man mit mehr Speicher für Sie, natürlich auf dem Server mehr Last hat. [Der Hauptspeicher ist immer beschränkt, deshalb kann ich 2 Prozesse mit 64MB laufen lassen, ohne dass der Rechner die Daten des Benutzers auslagern muss (PAGING). Wenn Sie jetzt 128 MB brauchen, dann kommt die Maschine entweder in Paging, oder es muss ein Prozess dafür ausgelagert werden, der eben dann nicht rankommt und bis zum nächsten Zyklus warten muss].

Offensichtlich liegt Ihr Blog wohl in einem falschen Tarif. Das müssen Sie ändern lassen, oder ggf. den Provider wechseln.

Aus genau diesem Grunde, der ja ggf. sehr ärgerliche sein kann, wenn plötzlich Ihr Blog nicht mehr richtig läuft, kann es zu enormen Ausfällen, Umsatzeinbußen etc. kommen!
Egal ob Sie nun diesen Fehler schon hatten oder nicht, spielen Sie den PlugIn ein und speichern Sie das phpinfo.php auf Ihrem Rechner um ggf. es zur Hand zu haben, wenn der Fehler auftritt.

Zusatz: Plugin „Tweet This“

Wie neuerdings gefunden wurde, kann der Fehler 500 auch mit dem PlugIn „Tweet This“ zusammenhängen. Der Plugin aus der Seite http://richardxthripp.thripp.com/tweet-this/ beschreibt selbst, dass er für seine Aufgabe eine Menge Speicherplatz benötigt, um die Verbindung zu Twitter aufzunehmen. Dies kann – und im vorliegenden Fall half es – zu einem Fehler 500 führen. Es geht auch hier um den Bedarf an internem Speicherplatz. Also das Gleiche wie oben beschrieben. Der Verursacher wurde hier zwar mittelbar erkannt, der Hauptgrund – der Interne Speicherbedarf – ist aber hier auch involviert, wo mit wir wieder bei obiger Begründung sind. Durch löschen des Plugins Tweet This trat der Fehler bei sonst gleichen Bedingungen nicht mehr auf. Das ist aber nur eine Notlösung des Problems.
Viel Erfolg
Bernd Klüppelberg

P.S. Dieser Artikel stellt die bisherigen Ergebnisse der Analyse dar, es könnte sein, dass der Fehler noch andere Gründe hat! Aber ich werde hier am Ball bleiben.

Bisher gibt es keinen Kommentar. Schreiben Sie einen Kommentar!

Schreibe einen Kommentar