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

Alte PHP-Versionen unter Debian 12 entfernen – Apache mit PHP-FPM richtig aufräumen

Autor
Alte PHP-Versionen unter Debian 12 entfernen – Apache mit PHP-FPM richtig aufräumen

Apache mit PHP-FPM ist unter Debian 12 der empfohlene Standard: performant, sauber getrennt und deutlich flexibler als das klassische mod_php. Trotzdem sammelt sich auch hier schnell technischer Ballast an – vor allem mehrere PHP-FPM-Versionen, die parallel installiert und teilweise sogar aktiv sind.

Das Ergebnis:

  • mehrere laufende FPM-Dienste
  • unklare Zuordnung zwischen Apache und PHP
  • unnötige Sicherheitsrisiken
  • steigender Wartungsaufwand

In diesem Artikel zeige ich Schritt für Schritt, wie man alte PHP-Versionen in einem Apache-+-PHP-FPM-Setup unter Debian 12 sauber entfernt, ohne Ausfälle oder böse Überraschungen.

Warum ist PHP-FPM-Aufräumen besonders wichtig?

Im Gegensatz zu mod_php läuft bei PHP-FPM jede PHP-Version als eigener Systemdienst:

php8.1-fpm.service
php8.2-fpm.service
php8.4-fpm.service

Bleiben alte Versionen aktiv:

  • verbrauchen sie RAM und CPU
  • erhöhen die Angriffsfläche
  • führen zu falschen Socket-Zuordnungen
  • erschweren Debugging und Updates

Best Practice: Pro Server nur die PHP-FPM-Version betreiben, die wirklich genutzt wird.

Schritt 1: Installierte PHP-Versionen ermitteln

Zuerst verschaffen wir uns einen Überblick:

ls /etc/php

Beispiel:

8.1  8.2  8.4

Oder detaillierter:

dpkg -l | grep php

Schritt 2: Aktive PHP-FPM-Version feststellen

Laufende PHP-FPM-Dienste anzeigen

systemctl list-units --type=service | grep php

Beispiel:

php8.1-fpm.service
php8.4-fpm.service

Alarmzeichen: Mehr als ein FPM-Dienst läuft.

Schritt 3: Apache-Konfiguration prüfen (entscheidend!)

Apache spricht PHP-FPM über Unix-Sockets oder TCP.

Typische Konfiguration (SetHandler):

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost/"
</FilesMatch>

Notiere dir:

  • welche PHP-Version hier verwendet wird
  • welcher Socket konfiguriert ist

Nur diese Version darf später bleiben.

Schritt 4: Alte PHP-FPM-Dienste stoppen und deaktivieren

Beispiel: PHP 8.1 entfernen, PHP 8.4 behalten

sudo systemctl stop php8.1-fpm
sudo systemctl disable php8.1-fpm

Optional sofort prüfen:

systemctl status php8.1-fpm

Schritt 5: Alte PHP-Versionen vollständig entfernen

Jetzt werden die alten Versionen komplett deinstalliert.

sudo apt purge php8.1\*

Für mehrere Versionen:

sudo apt purge php8.1\* php8.2\*

Das \* stellt sicher, dass alle Extensions und FPM-Komponenten entfernt werden.

Schritt 6: System bereinigen

sudo apt autoremove --purge
sudo apt autoclean

Dieser Schritt entfernt:

  • verwaiste Abhängigkeiten
  • nicht mehr benötigte Libraries
  • alte Konfigreste

Schritt 7: PHP-CLI-Version korrekt setzen

Auch wenn Apache PHP-FPM nutzt, ist die CLI-Version wichtig (Cronjobs, Tools, Skripte).

sudo update-alternatives --config php

Beispiel:

* 0 /usr/bin/php8.4
  1 /usr/bin/php8.2

Gewünschte Version auswählen

Schritt 8: Konfigurationsreste entfernen (optional, aber sauber)

Nach dem Purge können noch Ordner existieren:

sudo rm -rf /etc/php/8.1
sudo rm -rf /etc/php/8.2

⚠️ Nur löschen, wenn die Versionen sicher nicht mehr gebraucht werden.

Schritt 9: Apache neu laden & testen

sudo systemctl reload apache2

Testseite erstellen:

<?php phpinfo();

Prüfen:

  • PHP-Version
  • FPM-SAPI
  • Socket-Pfad

Finaler Check ✅

php -v
ls /etc/php
systemctl list-units --type=service | grep php

Erwartetes Ergebnis:

  • nur eine PHP-Version
  • nur ein phpX.X-fpm Dienst
  • Apache nutzt den korrekten Socket

Typische Fehler in Apache + PHP-FPM Setups

Problem Ursache
503 Service Unavailable FPM-Dienst gestoppt
Apache startet, PHP nicht falscher Socket
CLI ≠ Web update-alternatives nicht gesetzt
Hoher RAM-Verbrauch mehrere FPM-Versionen aktiv
Updates schlagen fehl alte PHP-Repos aktiv

Ein Apache-+-PHP-FPM-Server profitiert massiv von einem aufgeräumten PHP-Setup. Weniger Versionen bedeuten:

  • höhere Sicherheit
  • bessere Performance
  • weniger Fehlerquellen
  • entspanntere Wartung

Ein Server = eine PHP-FPM-Version – alles andere ist Ballast.