Eine PHP-Version außerhalb des Supports läuft weiterhin einwandfrei und bekommt keine Sicherheitsfixes mehr. Nichts wirkt kaputt, und darum sitzen Websites jahrelang darauf - und darum ist eine alte PHP-Version eines der ersten Dinge, nach denen ein Angreifer sieht.
Zwei verschiedene Aktualisierungen
- Patch-Releases - 8.3.10 auf 8.3.11. Nur Sicherheits- und Fehlerkorrekturen, keine Verhaltensänderung. Diese automatisch einspielen.
- Große Versionen - 8.2 auf 8.3. Können veraltetes Verhalten entfernen, auf das Ihr Code baut. Die brauchen erst eine Prüfung.
Die Patch-Releases automatisieren
sudo apt-get install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
grep -A5 "Allowed-Origins" /etc/apt/apt.conf.d/50unattended-upgrades
Eine große Version ordentlich vorbereiten
- Herausfinden, was bricht - statisch —
vendor/bin/rector process --dry-runoderphpcs --standard=PHPCompatibility --runtime-set testVersion 8.3 - Die neue Version neben der alten installieren — beide können da sein; allein der Pool entscheidet, welche läuft.
- Staging darauf richten und die Website durchspielen — Kasse, Uploads, Mail, die Cronjobs.
- Den Produktionspool umstellen, die alte Version installiert lassen — damit der Rückweg eine Zeile und ein Neuladen ist.
sudo apt-get install -y php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-curl php8.3-xml
# nginx
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
sudo nginx -t && sudo systemctl reload nginx
Dann prüfen, was geladen ist, nicht was installiert ist
php -v # the CLI version
curl -sSI https://yourdomain.com | grep -i x-powered-by
php -m | sort # the modules the site actually has
Die CLI-Version und die Web-Version sind getrennt. Ein Cronjob kann auf PHP 8.1 laufen, während die Website auf 8.3 läuft, und der Unterschied zeigt sich als Fehler, der immer nur nachts auftritt.
Auf EGPHP-Hosting ist die Version ein Auswahlfeld, Patch-Releases werden für Sie eingespielt, und die vorherige Version bleibt verfügbar. Siehe Ihre PHP-Version aktualisieren.