What PHP end of life actually means
Every PHP version follows a structured lifecycle: two years of active support covering bug fixes and security patches, followed by one year of security-only support. At the end of this cycle, the version enters End of Life (EOL) status. For PHP 8.2, that date is December 31, 2026. Once that date passes, vulnerabilities discovered in PHP 8.2 will no longer receive any official patch. Your servers will keep running the code, but they will do so without any safety net. CVEs published after December 31, 2026 will remain exploitable indefinitely on unpatched installations.
Concrete risks after December 31, 2026
- Zero-day vulnerabilities with no fix — security issues discovered in PHP 8.2 after EOL will no longer receive official patches, leaving your applications exposed to exploits as soon as they are published.
- Growing framework incompatibility — Laravel 12 requires PHP 8.3 as a minimum; WordPress 6.7 and premium plugins are beginning to drop PHP 8.2 support.
- Hosting provider removal — some hosting providers and control panels are removing PHP 8.2 from their managed environments, forcing unplanned emergency migrations.
- Compliance audit risk — ISO 27001, PCI-DSS, and SOC 2 frameworks flag the use of EOL runtimes as an unacceptable risk.
- Composer dependency conflicts — packages gradually stop declaring PHP 8.2 compatibility, causing conflicts when updating dependencies.
Inventory your portfolio: identify every site running PHP 8.2
The first challenge for an agency is not technical — it is cartographic. Before any migration work, you need to know exactly how many sites are running PHP 8.2 and under what server configuration. An incomplete inventory leads to forgotten sites that remain exposed after the deadline. On each VPS or shared server, run php -v per virtual host or consult a temporarily deployed phpinfo.php file, and record all active versions in a shared spreadsheet with context (CMS, framework, critical dependencies).
Migration checklist to PHP 8.3 or 8.4
Test compatibility on a staging environment
Before making any change in production, duplicate the site on a test instance with PHP 8.3 or 8.4 enabled. Identify deprecation warnings, fatal errors, and extension incompatibilities.
Update dependencies
Run composer update in the staging environment and resolve version conflicts. Verify that each package explicitly declares compatibility with the target PHP version in its composer.json.
Validate with a test suite
Run PHPUnit, Pest, or existing end-to-end tests against the target PHP version. If the project has no tests yet, prioritize critical user flows (authentication, cart, contact forms) with documented manual testing.
Switch the version in production
Once validation is complete, change the active PHP version in the virtual host configuration (PHP-FPM pool or hosting provider directive), then monitor error logs for 24 to 48 hours.
Isolate difficult projects with Docker
When projects have very different extension or ini configuration requirements, Docker provides complete isolation: each application has its own PHP runtime and extensions, with no interference from neighboring containers.
On a VPS, PHP-FPM lets you run multiple versions in parallel: each nginx virtual host points to a separate FPM pool (for example php82-fpm.sock, php83-fpm.sock). This allows you to migrate site by site without affecting other projects hosted on the same machine. Start with your least critical sites to refine your process.
Planning ahead to manage your client portfolio smoothly
For an agency managing dozens of sites, the PHP migration is a multi-site project to coordinate months in advance. Build a priority schedule: critical e-commerce sites first, brochure sites last. Communicate the risks of staying on PHP 8.2 after December 31, 2026 to your clients — a dated service note can be enough to trigger the agreement and budgeting needed. For projects already using Docker, migration reduces to changing a base image in the Dockerfile: see our guide demarrer-avec-docker-vps for a step-by-step walkthrough.