Probleme beim Betrieb von PHP-basierten CMS analysieren

Moderne Content Management Systeme (CMS) sind mächtig aber auch umfangreich. Sobald aber das kleinste Problem auftritt stehen normale Admins meist hilflos da. Natürlich sind mögliche Fehlerquellen unendlich. Drei Tipps sollen aber für den Anfang helfen.

Tipp 1: Fehlermeldungen einschalten bzw. LOGs benutzen

Viele Provider schalten die Ausgabe von Fehlermeldungen ab, da sie Informationen preisgeben könnten, die ein Sicherheitsrisiko darstellen. Leider hängt es ganz von der Webseite ab ob und wie sich die Darstellung einschalten lässt.

xdebug-fehlerausgabe

Scripteinstellungen des Providers

Gute Provider wie Hosteurope erlauben die Änderung der Laufzeitvariablen in der Verwaltungsoberfläche. Ob und wie das funktioniert sollte man beim Provider erfragen. Dabei kann es bei ein und demselben Provider abhängig vom gebuchten Paket sein ob es möglich ist.

php.ini

In den seltensten Fällen hat der Kunde direkte Zugriff auf die Konfiguration (php.ini). Bei manchen Providern wie Strato kann man im Webverzeichnis eine lokale php.ini Datei erzeugen in die man zwei Zeilen schreibt.

display_errors = On
error_reporting = E_ALL

.htaccess

Häufiger ist es möglich über eine Datei namens .htaccess die Fehlerausgabe einzuschalten. Die folgenden zwei Zeilen müssen hierfür am Anfang der Datei angefügt werden.

php_flag display_errors on
php_value error_reporting 6143

Wenn die .htaccess Datei nicht vorhanden ist, dann kann man sie lokal erzeugen und über FTP hochladen.

Index.php

Auch durch PHP lässt die die Fehlerausgabe aktivieren. Wichtig ist hierfür dass die verwendete PHP-Umgebung dieses unterstützt und die Anweisungen vor dem Beginn der ersten Ausgabe an den Browser stehen. Idealerweise fügt man in die index.php direkt nach dem Open Tag (<?php) folgende Zeilen ein.

error_reporting(E_ALL);
ini_set("display_errors", 1);

Log Dateien benutzen

PHP speichert Fehlermeldungen normalerweise zumindest in .log Dateien ab die man analysieren kann. Sollten die anderen Möglichkeiten nicht funktionieren und selbst das nicht der Fall sein oder man keinen Zugriff auf die .log-Dateien haben sollte man über einen Providerwechsel nachdenken.

Die Fehlermeldungen können manchmal etwas kryptisch sein. Allerdings hilft es genau zu lesen und notfalls nach Antworten zu Googlen.

Tipp 2: phpinfo-Ausgabe analysieren

Phpinfo ist ein Befehl der detailliert Auskunft über die Laufzeitumgebung gibt. Es reicht eine Datei mit einem phpinfo() Befehl um alle Informationen abzurufen.

<?php phpinfo(); ?>

Wichtig sind verschiedene Informationen. Unter „Apache Handler“ findet man den Benutzer unter dem PHP aufgerufen wird und kann so einschätzen ob die Verzeichnisrechte richtig gesetzt sind. Bei Problemen beim Start der Anwendung oder Upload von großen Dateien sollte man sich die Werte für „memory_limit“ und „post_max_size“ anschauen und mit den Anforderungen vergleichen. Die „Apache Environment“-Variablen helfen dabei den echten Pfad unter dem die Webseite liegt zu ermitteln.

php-info-small

Benutzer von Joomla haben es besonders einfach. Zum einen gibt es einen DEBUG-Mode der vor allem bei Problemen mit dem Laufzeitverhalten hilfreich ist. Am Ende der Seiten Ausgabe erscheint eine Liste der Datenbank-Aufrufe und einzelnen Prozesse und die Zeit die sie in Anspruch genommen haben. Zum anderen findet der Administrator unter System=>Systeminformationen nicht nur die phpinfo-Ausgabe sondern auch noch Informationen über Verzeichnisrechte und wichtige Konfigurationseinstellungen.

Tipp 3: Kompromittierte Webseiten sind ein Fall für den Profi

Das Säubern von Webseiten ist ein eigenes Thema das viel Erfahrung und Vorsicht benötigt. Meist haben die Angreifer eine ganze Latte an Hintertürchen eingebaut. Sofern man also kein aktuelles Backup von vor der Infektion hat, sollte man die Seite abschalten und einen erfahrenen Administrator ranlassen.