PHP-Fehler werden nicht im Browser angezeigt & phpinfo() zeigt eine weiße Seite: Anleitung zur Fehlerbehebung unter Linux (Ubuntu LTS)

Melden

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.

  1. Öffne oder erstelle deine Testdatei im Web-Root-Verzeichnis (z. B. /var/www/html/):

    sudo nano /var/www/html/info.php
  2. Stelle sicher, dass der vollständige PHP-Tag verwendet wird:

    <?php
    phpinfo();
    ?>

    (Wichtig: Verwende nicht nur <?, sondern immer <?php!)

  3. Speichere die Datei mit STRG + O, bestätige mit Enter und schließe den Editor mit STRG + 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.

  1. Finde heraus, welche php.ini von deinem Webserver genutzt wird:

    php -i | grep "Loaded Configuration File"

    (Typische Pfade unter Ubuntu sind /etc/php/[Version]/apache2/php.ini für Apache oder /etc/php/[Version]/fpm/php.ini für Nginx).

  2. Ö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
  3. Suche mit STRG + W nach den folgenden Direktiven und passe die Werte wie folgt an:

    display_errors = On
    display_startup_errors = On
    error_reporting = E_ALL
  4. 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.

0