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
- Scopra che cosa si rompe, staticamente —
vendor/bin/rector process --dry-runoppurephpcs --standard=PHPCompatibility --runtime-set testVersion 8.3 - Installi la nuova versione accanto alla vecchia — possono esserci entrambe; è solo il pool a decidere quale gira.
- Ci punti lo staging e faccia lavorare il sito — cassa, caricamenti, posta, i cron.
- 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.