open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Host

PHP-Upgrade unter Debian 12: Von PHP 8.2 auf PHP 8.4 Schritt für Schritt

Autor
PHP-Upgrade unter Debian 12: Von PHP 8.2 auf PHP 8.4 Schritt für Schritt

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:

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

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

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:

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:

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:

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:

sudo update-alternatives --set php /usr/bin/php8.4

Überprüfung:

php -v

Schritt 5: Webserver auf PHP 8.4 umstellen

Apache mit mod_php

sudo a2dismod php8.2
sudo a2enmod php8.4
sudo systemctl restart apache2

Apache mit PHP-FPM

sudo systemctl enable --now php8.4-fpm
sudo systemctl restart apache2

Achte darauf, dass die Apache-Konfiguration auf den richtigen FPM-Socket verweist:

/run/php/php8.4-fpm.sock

Nginx mit PHP-FPM

sudo systemctl enable --now php8.4-fpm
sudo systemctl restart nginx

In der Nginx-Site muss ebenfalls der neue Socket eingetragen sein:

fastcgi_pass unix:/run/php/php8.4-fpm.sock;

Schritt 6: Funktionstest

PHP-FPM prüfen

systemctl status php8.4-fpm

Geladene Module anzeigen

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:

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 ≠ Webserverphp -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.