Una versione di PHP fuori supporto continua a girare benissimo e smette di ricevere correzioni di sicurezza. Nulla sembra rotto, ed è per questo che certi siti ci restano per anni - ed è anche per questo che una vecchia versione di PHP è fra le prime cose che un aggressore va a controllare.

Due aggiornamenti diversi

  • Le release di patch - da 8.3.10 a 8.3.11. Solo correzioni di sicurezza e di bug, nessun cambiamento di comportamento. Le applichi in automatico.
  • Le versioni maggiori - da 8.2 a 8.3. Possono togliere comportamenti deprecati su cui il suo codice si appoggia. Queste vogliono prima un controllo.

Automatizzi le release di patch

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

Prepari come si deve una versione maggiore

  1. Scopra che cosa si rompe, staticamentevendor/bin/rector process --dry-run oppure phpcs --standard=PHPCompatibility --runtime-set testVersion 8.3
  2. Installi la nuova versione accanto alla vecchia — possono esserci entrambe; è solo il pool a decidere quale gira.
  3. Ci punti lo staging e faccia lavorare il sito — cassa, caricamenti, posta, i cron.
  4. Sposti il pool di produzione, e lasci installata la versione vecchia — così tornare indietro è una riga e un reload.
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

Poi controlli che cosa è caricato, non che cosa è installato

php -v                       # the CLI version
curl -sSI https://yourdomain.com | grep -i x-powered-by
php -m | sort                # the modules the site actually has
La versione da riga di comando e quella web sono separate. Un cron può girare con PHP 8.1 mentre il sito gira con 8.3, e lo scarto si manifesta come un guasto che capita soltanto di notte.
Sull'hosting EGPHP la versione è un menù a tendina e le release di patch vengono applicate per lei, con la versione precedente tenuta disponibile. Veda aggiornare la sua versione di PHP.