- Veröffentlicht am
- • How2-Host
Alte PHP-Versionen unter Debian 12 sauber entfernen – Schritt für Schritt
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
Debian 12 („Bookworm“) gilt als stabil, modern und wartungsfreundlich. Trotzdem passiert es in der Praxis schnell, dass sich mehrere PHP-Versionen parallel ansammeln: ein Upgrade hier, ein Test dort, vielleicht ein externes Repository wie ondrej/php – und plötzlich laufen PHP 8.1, 8.2 und 8.4 gleichzeitig auf dem Server.
Das ist nicht nur unübersichtlich, sondern kann auch Sicherheits-, Wartungs- und Stabilitätsprobleme verursachen. In diesem Artikel zeige ich Schritt für Schritt, wie man alte PHP-Versionen unter Debian 12 sicher und sauber entfernt, ohne Apache, Nginx oder laufende Webanwendungen zu beschädigen.
Warum alte PHP-Versionen entfernen?
Mehrere installierte PHP-Versionen sind an sich kein Fehler – aber langfristig problematisch:
- Sicherheitsrisiken durch ungepatchte PHP-Versionen
- Verwirrung bei Updates (
aptaktualisiert die falsche Version) - Unterschiedliches Verhalten zwischen CLI und Webserver
- Überflüssige Dienste (z. B. mehrere PHP-FPM-Instanzen)
- Unnötige Angriffsfläche auf Produktivsystemen
Best Practice ist daher klar: Nur die PHP-Versionen installieren, die wirklich benötigt werden.
Schritt 1: Installierte PHP-Versionen ermitteln
Zunächst prüfen wir, welche PHP-Versionen überhaupt vorhanden sind.
ls /etc/php
Typische Ausgabe:
8.1 8.2 8.4
Alternativ detaillierter:
dpkg -l | grep php
So erhältst du eine vollständige Paketliste aller installierten PHP-Module.
Schritt 2: Aktive PHP-Version feststellen (sehr wichtig)
Bevor irgendetwas gelöscht wird, muss klar sein, welche PHP-Version aktuell genutzt wird.
PHP-CLI prüfen
php -v
Beispiel:
PHP 8.4.2 (cli)
Apache prüfen (falls genutzt)
apachectl -M | grep php
Oder:
a2query -m php*
Notiere dir die PHP-Version, die bleiben soll (z. B. PHP 8.4).
Schritt 3: Alte PHP-Module in Apache deaktivieren
Falls Apache verwendet wird, müssen alte PHP-Module zuerst deaktiviert werden.
Beispiel: PHP 8.1 und 8.2 entfernen, PHP 8.4 behalten:
sudo a2dismod php8.1
sudo a2dismod php8.2
Danach sicherstellen, dass die gewünschte Version aktiv ist:
sudo a2enmod php8.4
sudo systemctl reload apache2
Schritt 4: Alte PHP-Versionen deinstallieren
Jetzt können die alten PHP-Versionen vollständig entfernt werden.
Einzelne Version entfernen
sudo apt purge php8.1\*
Mehrere Versionen entfernen
sudo apt purge php8.1\* php8.2\*
Das \* ist wichtig, damit alle zugehörigen Module (cli, fpm, extensions) entfernt werden.
Schritt 5: System aufräumen
Nach dem Entfernen bleiben oft verwaiste Pakete zurück.
sudo apt autoremove --purge
sudo apt autoclean
Dieser Schritt sorgt für ein sauberes System ohne Altlasten.
Schritt 6: PHP-CLI-Version korrekt setzen (update-alternatives)
Debian nutzt für PHP die update-alternatives-Mechanik.
sudo update-alternatives --config php
Beispielausgabe:
* 0 /usr/bin/php8.4
1 /usr/bin/php8.2
Hier unbedingt die gewünschte Version auswählen.
Schritt 7: PHP-FPM prüfen (falls genutzt)
Wenn PHP-FPM im Einsatz ist (typisch bei Nginx oder modernen Apache-Setups):
systemctl list-units --type=service | grep php
Nicht mehr benötigte Dienste stoppen und deaktivieren:
sudo systemctl stop php8.1-fpm
sudo systemctl disable php8.1-fpm
Schritt 8: Konfigurationsreste entfernen (optional)
Wenn eine PHP-Version vollständig entfernt wurde, können auch die Konfigurationsverzeichnisse gelöscht werden:
sudo rm -rf /etc/php/8.1
sudo rm -rf /etc/php/8.2
⚠️ Nur durchführen, wenn die Versionen wirklich nicht mehr benötigt werden.
Schritt 9: Finaler Systemcheck
Zum Abschluss prüfen wir alles noch einmal:
php -v
ls /etc/php
Erwartetes Ergebnis:
PHP 8.4.x
8.4
✅ Fertig – das System ist aufgeräumt.
Bonus: Alle PHP-Versionen außer einer entfernen (Power-User)
Wer genau weiß, was er tut, kann alte Versionen auch automatisch entfernen:
dpkg -l | grep php | grep -v 8.4 | awk '{print $2}' | xargs sudo apt purge -y
⚠️ Nur empfohlen für erfahrene Admins.
Typische Fehlerquellen und Lösungen
| Problem | Ursache |
|---|---|
| Apache startet nicht | falsches PHP-Modul aktiv |
| CLI nutzt andere Version | update-alternatives nicht gesetzt |
| PHP-FPM läuft doppelt | alte FPM-Services aktiv |
| apt will falsche Version installieren | Repository-Prioritäten |
Das Entfernen alter PHP-Versionen unter Debian 12 ist kein Hexenwerk, erfordert aber ein strukturiertes Vorgehen. Wer vorher prüft, welche Version aktiv ist, und Apache/PHP-FPM sauber behandelt, vermeidet Ausfälle und Chaos.
Ein aufgeräumtes PHP-Setup bedeutet:
- weniger Angriffsfläche
- klarere Wartung
- reproduzierbares Verhalten
- entspannteres Admin-Leben