Wenn Joomla!, Wordpress und co plötzlich nur noch eine leere Seite anzeigen, dann ist für meisten Anwender guter Rat teuer. Dabei ist die Sache gar nicht so schwer, vor allem dann, wenn der Webhoster die nötigen Tools bereitstellt.

Allgemein treten diese 2 Fehler auf:

  • Fehler auf Ebene des Webservers (z.B. Apache, nginx)
  • Fehler auf Ebene von PHP

In beiden Fällen kann man die Fehler loggen lassen und aus den Fehlermeldungen findet man in der Regel schnell die Ursache und kann eine Lösung erarbeiten.

Dieser Artikel zeigt das Vorgehen für Kunden der Webverwaltungssoftware Liveconfig beim Webhoster Andre Hotzler EDV-Dienstleistungen (meine Wenigkeit).
Übrigens, wenn ihr bei mir hostet, sind die Joomla!-Core-Updates schon im Hosting-Preis mit inbegriffen, Voraussetzung hierfür ist ein Admin-Zugang zum Joomla!
Da die Webseiten täglich gesichert werden, ist es auch kein Problem, wenn man ein Update fehlschlagen sollte.

Bei anderen Webhostern gibt es möglicherweise ähnliche Konfigurationsmöglichkeiten.

Ermitteln von Fehlern auf Ebene des Webservers (z.B. Apache, nginx)

Fehler auf Ebene des Webservers sind beispielsweise:

  • PHP kann nicht gestartet werden
    Beispiel: "mod_fcgid: can't apply process slot for /var/www/xxxxxx/conf/php5/php-fcgi-starter"
  • Fehler in einer mod_rewrite Anweisung
    Beispiel: "Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace."

Diese Fehler werden oft von einer Fehlermeldung der 500er Serie begleitet und werden in das globale Error-Log des Webservers geschrieben, auf die Du als Kunde keinen Zugriff hast.

So schaust Du die die Apache-Error in Liveconfig an:

1.) Fehler zum Testen erzeugen

Ich habe hierzu einen Fehler absichtlich erzeugt, indem ich mich bei "RewriteRule" verschrieben habe

Dieser Fehler wird von einem "500 - Internal Server Error" belohnt:

Normalerweise habt ihr ja nicht absichtlich einen Fehler eingebaut und wisst daher die Ursache nicht. Ihr müsst dann also einen Blick ins Error-Log des Webservers werfen.

2.) Fehlerprotokoll einschalten

Dazu aktiviert ihr das Fehlerprotokoll, indem ihr auf Schaltfläche 1 "aktivieren" klickt.
Diese Ansicht findet ihr links im Menu unter dem Menüpunkt "Webspace".

Das Log bleibt dann für 1 Tag aktiviert:

3.) Fehlerprotokoll anschauen

Nun müsst ihr den Fehler noch einmal erzeugen, indem ihr die fehlerhafte Seite neu ladet.

Vergesst ihr das, wird Euch das Fehlerprotokoll gar nicht angezeigt, da es erst beim ersten Auftreten des Fehlers erzeugt wird.

Durch Klicken auf die Schaltfläche "zeigen", öffnet sich ein Fenster, welches fortwährend aktualisiert wird, wählt dann "error.log".

Anhand der Fehlermeldung sehen wir nun, in welcher Datei der Fehler steckt (.htaccess) und wir sehen den Hinweise auf den Tippfehler "ewriteCond".

Ermitteln von Fehlern auf Ebene von PHP

Für die Ermittlung von PHP-Fehlern gibt es in der Grund-Konfiguration von PHP verschiedene Einstellungen.
Außerdem kann man in PHP zur Laufzeit Einstellungen verändern, auch Joomla! bietet dazu Debug-Einstellungen an.

Für den normalen Anwender ist das Alles aber schon "Zuviel des Guten", weiter unten wird gezeigt, wie es einfacher geht.

Nur der Vollständigkeit halber, relevant sind:

  • display-errors (zeigt Fehler direkt auf der Webseite an)
  • error-reporting (bestimmt, welche Arten von Fehlern ausgegeben werden.
  • log-errors (schreibt die Fehler in ein Log-File, der Pfad und Dateiname müssen konfiguriert sein)

Bei vielen Providern ist display-errors in Verbindung mit der maximal möglichen Fehlerausgabe aktiviert, was eine sehr dumme Einstellung ist.
Dies führt dazu, dass für Anwender (und Besucher, Kunden usw.) völlig sinnlose Hinweise und Warnungen ausgegeben werden. Glücklicherweise unterdrücken neuere Joomla!-Versionen dies, solange keiner an den Debug-Funktionen herumfummelt.

In der Dokumentation von PHP wird ausdrücklich darauf hingewiesen:

"This is a feature to support your development and should never be used on production systems (e.g. systems connected to the internet)." http://php.net

Als Entwickler der Joomla!-Erweiterung Flexheader bezog sich der Großteil der Support-Anfragen auf diese fehlerhafte Voreinstellung von planlosen Server-Administratoren und Webhostern.

Ich halte auch nichts davon, das Debugging in Joomla! zu verwenden, solange andere Debug-Möglichkeiten, wie hier gezeigt, vorhanden sind.
Auch das Joomla!-Debugging arbeitet mit display-errors und viele Anwender vergessen, die Einstellung später wieder zurück zu setzen, so dass es vorkommen kann, dass später (z.B. nach Updates) sinnlose Hinweise direkt auf der Webseite ausgegeben werden, wie eben im roten Kasten erwähnt.

1.) Fehler zum Testen erzeugen

Ich habe ganz einfach eine paar Schreibfehler in der index.php des Joomla! erzeugt.

2.) Fehlerprotokoll einschalten

Diese Ansicht findet ihr links im Menu unter dem Menüpunkt "Webspace". Klickt dort bei "PHP" auf "Einstellungen".

Ein Popup öffnet sich, klickt dort auf das rote x neben "log_errors".

Ein weiteres Popup erscheint, dort konfiguriert ihr die Einstellung auf "Ja", wie abgebildet.

Nach "Speichern" zeigt ein grünes Häkchen, dass die Option nun aktiviert ist.

3.) Fehlerprotokoll anschauen

Nun hier auf "zeigen" klicken:

Ein Popup öffnet sich und ihr könnt das Log "priv/php_errors.log" auswählen.

Und siehe da, ein "PHP Parse Error" mit Angabe des Dateinamens.
Scrollt man ganz nach rechts, wird auch die Zeilennummer, in der der Fehler auftrat, angezeigt.

Mit diesen Informationen ist es nun relativ einfach, selbst gemachte Fehler zu korrigieren, oder z.B. einen Bug-Report zu schreiben.