Debian 12 („Bookworm“) bringt standardmäßig PHP 8.2 mit. Für viele Anwendungen ist das vollkommen ausreichend. Wer jedoch neuere Features nutzen, Sicherheitsupdates früher erhalten oder mehrere Systeme konsistent auf einem aktuellen PHP-Stand halten möchte, kommt um ein Upgrade auf PHP 8.4 nicht herum.
Da Debian in den offiziellen Paketquellen bewusst konservativ bleibt, ist PHP 8.4 dort (noch) nicht enthalten. In diesem Artikel zeige ich daher den bewährten Weg über das Sury-Repository, das sich seit Jahren als De-facto-Standard für aktuelle PHP-Versionen unter Debian etabliert hat.
Der Beitrag richtet sich an Administratoren und Entwickler, die Apache oder Nginx betreiben und entweder mod_php oder PHP-FPM einsetzen.
Ausgangssituation
- Betriebssystem: Debian 12 (Bookworm)
- Aktuelle PHP-Version: PHP 8.2
- Zielversion: PHP 8.4
- Webserver: Apache oder Nginx
- Produktivsystem oder Staging-Server
Wichtig:
Vor jedem Versionssprung empfiehlt sich ein Backup relevanter Konfigurationsdateien und Anwendungen. Besonders produktive Systeme sollten zunächst in einer Testumgebung aktualisiert werden.
Warum das Sury-Repository?
Das Repository von Ondřej Surý (ehemaliger Debian-PHP-Maintainer) bietet:
- aktuelle PHP-Versionen (inkl. Security-Fixes),
- saubere Parallelinstallation mehrerer PHP-Versionen,
- vollständige Modulunterstützung (FPM, CLI, Apache, Extensions),
- sehr gute Pflege und Community-Akzeptanz.
Kurz: der Standardweg für modernes PHP unter Debian.
Schritt 1: System vorbereiten
Zunächst werden benötigte Systempakete installiert, um externe Paketquellen sicher einzubinden:
``bash sudo apt update sudo apt install -y ca-certificates apt-transport-https lsb-release wget gnupg ``
Schritt 2: Sury-Repository einbinden
GPG-Schlüssel hinzufügen
``bash sudo mkdir -p /etc/apt/keyrings wget -qO- https://packages.sury.org/php/apt.gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/sury-php.gpg ``
Repository eintragen
``bash echo "deb [signed-by=/etc/apt/keyrings/sury-php.gpg] \ https://packages.sury.org/php/ $(lsb_release -sc) main" | \ sudo tee /etc/apt/sources.list.d/sury-php.list ``
Danach die Paketliste aktualisieren:
``bash sudo apt update ``
Schritt 3: PHP 8.4 installieren
Variante A: PHP-FPM (empfohlen)
Diese Variante eignet sich für Nginx oder Apache mit Proxy-FPM:
``bash sudo apt install -y \ php8.4-fpm php8.4-cli php8.4-common \ php8.4-mysql php8.4-xml php8.4-curl \ php8.4-mbstring php8.4-zip php8.4-gd php8.4-intl ``
Variante B: Apache mit mod_php
Wenn PHP direkt als Apache-Modul läuft:
``bash sudo apt install -y \ php8.4 libapache2-mod-php8.4 php8.4-cli php8.4-common \ php8.4-mysql php8.4-xml php8.4-curl \ php8.4-mbstring php8.4-zip php8.4-gd php8.4-intl ``
Schritt 4: PHP-Version für CLI umstellen
Nach der Installation existieren PHP 8.2 und PHP 8.4 parallel. Die Standardversion für die Kommandozeile wird über update-alternatives gesetzt:
``bash sudo update-alternatives --set php /usr/bin/php8.4 ``
Überprüfung:
``bash php -v ``
Schritt 5: Webserver auf PHP 8.4 umstellen
Apache mit mod_php
``bash sudo a2dismod php8.2 sudo a2enmod php8.4 sudo systemctl restart apache2 ``
Apache mit PHP-FPM
``bash sudo systemctl enable --now php8.4-fpm sudo systemctl restart apache2 ``
Achte darauf, dass die Apache-Konfiguration auf den richtigen FPM-Socket verweist:
``text /run/php/php8.4-fpm.sock ``
Nginx mit PHP-FPM
``bash sudo systemctl enable --now php8.4-fpm sudo systemctl restart nginx ``
In der Nginx-Site muss ebenfalls der neue Socket eingetragen sein:
``nginx fastcgi_pass unix:/run/php/php8.4-fpm.sock; ``
Schritt 6: Funktionstest
PHP-FPM prüfen
``bash systemctl status php8.4-fpm ``
Geladene Module anzeigen
``bash php -m ``
Optional: phpinfo()
Eine phpinfo()-Seite zeigt zuverlässig, welche PHP-Version tatsächlich vom Webserver genutzt wird.
Schritt 7: Alte PHP-Version entfernen (optional)
Erst wenn alle Anwendungen stabil laufen, kann PHP 8.2 entfernt werden:
``bash sudo apt purge -y php8.2\* sudo apt autoremove -y ``
Typische Stolperfallen
- FPM-Socket vergessen anzupassen
→ häufigste Fehlerquelle bei Nginx/Apache
- Fehlende Extensions
→ jede PHP-Version benötigt eigene Module
- CLI ≠ Webserver
→ php -v zeigt nicht zwingend die Web-Version
- Produktivsysteme ohne Testlauf
→ besser erst Staging aktualisieren
Das Upgrade von PHP 8.2 auf PHP 8.4 unter Debian 12 ist mit dem Sury-Repository sauber, sicher und gut kontrollierbar möglich. Dank Parallelinstallation lassen sich bestehende Systeme risikolos migrieren, testen und bei Bedarf wieder zurückschalten.
Wer regelmäßig PHP-Updates durchführen möchte, sollte den Einsatz von PHP-FPM und klar getrennten Versionen ohnehin als Best Practice betrachten.