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

Alte PHP-Versionen unter Debian 12 sauber entfernen – Schritt für Schritt

Autor
Alte PHP-Versionen unter Debian 12 sauber entfernen – Schritt für Schritt

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 (apt aktualisiert 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