PHP-Fehler werden nicht im Browser angezeigt & phpinfo() zeigt eine weiße Seite: Anleitung zur Fehlerbehebung unter Linux (Ubuntu LTS)
Wenn ein PHP-Skript im Browser lediglich eine komplett weiße Seite („White Screen of Death“) anzeigt und selbst phpinfo() keinen Inhalt liefert, liegt das meist an restriktiven PHP-Einstellungen, Syntaxfehlern oder einem nicht ordnungsgemäß funktionierenden PHP-Modul.
In diesem Tutorial erfährst du Schritt für Schritt, wie du die Fehleranzeige unter Ubuntu LTS aktivierst und das Problem einer leeren phpinfo()-Seite systematisch löst.
Voraussetzungen
- Ein Server mit Ubuntu LTS
- SSH-Zugriff mit Sudo-Rechten
- Ein installierter Webserver (Apache oder Nginx)
Schritt 1: Überprüfen der PHP-Testdatei (info.php)
Häufig liegt das Problem bei einer leeren phpinfo()-Seite an einem simplen Syntaxfehler oder der Verwendung von Short Open Tags (<?), die standardmäßig deaktiviert sind.
-
Öffne oder erstelle deine Testdatei im Web-Root-Verzeichnis (z. B.
/var/www/html/):sudo nano /var/www/html/info.php -
Stelle sicher, dass der vollständige PHP-Tag verwendet wird:
<?php phpinfo(); ?>(Wichtig: Verwende nicht nur
<?, sondern immer<?php!) -
Speichere die Datei mit
STRG + O, bestätige mitEnterund schließe den Editor mitSTRG + X.
Schritt 2: Prüfen, ob PHP installiert und aktiv ist
Wenn die Datei korrekt ist, aber weiterhin leer bleibt, wird PHP eventuell gar nicht vom Webserver verarbeitet.
Bei Verwendung von Apache:
Überprüfe, ob das PHP-Modul aktiviert ist:
# Überprüfe die installierte PHP-Version
php -v
# Aktiviere das Modul (Beispiel für PHP 7.4 / 8.x)
sudo a2enmod php*
sudo systemctl restart apache2
Bei Verwendung von Nginx:
Nginx benötigt PHP-FPM zur Ausführung von Skripten. Prüfe, ob der FPM-Dienst läuft:
sudo systemctl status php*-fpm
Falls der Dienst gestoppt ist, starte ihn:
sudo systemctl start php*-fpm
sudo systemctl restart nginx
Schritt 3: Fehleranzeige in der php.ini aktivieren
Standardmäßig ist die Ausgabe von PHP-Fehlern im Browser aus Sicherheitsgründen deaktiviert (display_errors = Off). Um Fehlermeldungen direkt im Browser zu sehen, musst du die Konfigurationsdatei anpassen.
-
Finde heraus, welche
php.inivon deinem Webserver genutzt wird:php -i | grep "Loaded Configuration File"(Typische Pfade unter Ubuntu sind
/etc/php/[Version]/apache2/php.inifür Apache oder/etc/php/[Version]/fpm/php.inifür Nginx). -
Öffne die entsprechende Datei im Editor (passe die Versionsnummer ggf. an):
sudo nano /etc/php/*/apache2/php.ini # ODER für Nginx/PHP-FPM: sudo nano /etc/php/*/fpm/php.ini -
Suche mit
STRG + Wnach den folgenden Direktiven und passe die Werte wie folgt an:display_errors = On display_startup_errors = On error_reporting = E_ALL -
Speichere und schließe die Datei (
STRG + O,Enter,STRG + X).
Schritt 4: Webserver / PHP-Dienst neu starten
Damit die Änderungen in der php.ini wirksam werden, musst du den Dienst neu starten:
-
Für Apache:
sudo systemctl restart apache2 -
Für Nginx & PHP-FPM:
sudo systemctl restart php*-fpm sudo systemctl restart nginx
Lade die Seite im Browser neu (STRG + F5). PHP-Fehler sollten nun im Klartext angezeigt werden, anstelle eines leeren Bildschirms.
Schritt 5: Fehlerausgabe direkt im PHP-Skript erzwingen (Alternative)
Wenn du keinen Zugriff auf die php.ini hast oder die Konfiguration nur für ein bestimmtes Skript testen möchtest, kannst du die Fehleranzeige auch temporär per PHP-Code am Anfang deines Skripts erzwingen:
Füge ganz oben in deine PHP-Datei folgendes ein:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// Dein restlicher Code...
?>
(Hinweis: Dies fängt keine fatalen Parse- oder Syntax-Fehler ab, da das Skript in solchen Fällen gar nicht erst ausgeführt wird. Nutze dafür die Anpassung in Schritt 3).
Schritt 6: Logdateien prüfen (falls die Seite weiterhin weiß bleibt)
Sollte der Browser noch immer keinen Fehler anzeigen, werfe einen Blick in die Systemlogs:
-
Apache Error-Log:
sudo tail -f /var/log/apache2/error.log -
Nginx Error-Log:
sudo tail -f /var/log/nginx/error.log -
PHP-FPM Log:
sudo tail -f /var/log/php*-fpm.log
Wichtiger Sicherheitshinweis
Aktiviere display_errors = On nur in Entwicklungs- oder Testumgebungen.
Auf Produktivservern (Live-Websites) sollten Fehler niemals öffentlich im Browser ausgegeben werden, da Fehlermeldungen sensible Informationen über dein System (z. B. Verzeichnispfade, Datenbankstrukturen oder Passwörter) preisgeben können. Setze auf Produktivsystemen den Wert immer auf:
display_errors = Off
log_errors = On
Fehler werden dann sicher in der Datei /var/log/php_errors.log (oder den Webserver-Logs) protokolliert.