[{"data":1,"prerenderedAt":212},["ShallowReactive",2],{"seo-verification":3,"blog-php-82-end-of-life-planning-your-migration-ma-en":6,"promo-bar-likely":211},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-php-82-end-of-life-planning-your-migration-ma-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":147,"ctaBody":148,"ctaButton":149,"ctaUrl":150,"relatedPosts":151},206,"php-82-end-of-life-planning-your-migration",{"fr":12,"en":10,"ar":13,"es":14},"php-82-fin-de-vie-checklist-migration","نهاية-دعم-php-82-دليل-الترحيل","php-82-fin-de-vida-planificar-la-migracion","PHP 8.2 end of life: your migration checklist","PHP 8.2 reaches EOL on December 31, 2026. Inventory your stack, compare PHP versions, and follow a step-by-step migration checklist to PHP 8.3 or 8.4.",11,7,false,"2026-08-01T00:00:00+00:00","2026-11-08T01:13:15+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},4,"Development","developpement","bg-warning\u002F10 text-warning","dev",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fphp-82-fin-de-vie-checklist-migration-poster.svg","On December 31, 2026, PHP 8.2 reaches its official end of life: after that date, no security patches will be issued by the PHP team. For agencies managing dozens of client sites, this deadline is not a minor technical note — it is an operational risk window that is closing. Planning the migration to PHP 8.3 or 8.4 ahead of time keeps you in control of the schedule rather than reacting under pressure.",[35,39,50,53,98,101,129,132,135,138,141,144],{"type":36,"title":37,"body":38},"h2","What PHP 8.2 end of life means in practice","Every PHP version follows a two-phase lifecycle: two years of active support (bug and security fixes), then two years of security-only support — four years total per version. PHP 8.2, released on December 8, 2022, ended active support on December 31, 2024. Since January 1, 2025, only critical security patches have been published. On December 31, 2026, even that coverage stops. Vulnerabilities discovered after that date in the PHP 8.2 engine will receive no official patch. Your servers will keep running code, but with no safety net. CVEs published after the EOL date will remain exploitable indefinitely on unmigrated installations. This is the difference between a maintained runtime and an abandoned one — and the difference is invisible in your logs until an attack occurs.",{"type":40,"title":41,"items":42},"ul","Concrete risks after December 31, 2026",[43,44,45,46,47,48,49],"**Unpatched zero-day vulnerabilities** — any vulnerability discovered in PHP 8.2 after EOL will remain exploitable indefinitely; attackers track these deadlines and wait.","**Growing framework incompatibility** — Laravel 13 (Q1 2026) requires PHP 8.3 as a minimum and officially drops PHP 8.2; projects that have not migrated will be unable to upgrade the framework.","**Composer package pressure** — package maintainers progressively stop declaring PHP 8.2 compatibility in their composer.json, causing blocks during dependency updates.","**Removal by hosting providers** — some managed panels and hosting providers remove PHP 8.2 from active environments, forcing an unplanned emergency migration.","**Compliance audit risk** — ISO 27001, PCI-DSS and SOC 2 frameworks require known vulnerabilities to be addressed; a runtime that no longer receives patches becomes a gap you must justify during an audit.","**Loss of WordPress support** — WordPress recommends PHP 8.3 or greater; premium plugins progressively condition their support on PHP 8.3 or higher.","**Progressive behavioral divergence** — PHP 8.3 and 8.4 correct internal behaviors and improve error messages; staying on 8.2 means missing these corrections and widening the gap with your team's development environments.",{"type":36,"title":51,"body":52},"Inventorying your stack — mapping PHP 8.2 sites","The first challenge for an agency is not technical, it is cartographic. Before any migration, you need to know exactly how many sites are running on PHP 8.2 and under what server configuration. An incomplete inventory leads to forgotten sites that remain exposed after the EOL date. On each VPS, run `php -v` per virtual host or consult a temporary phpinfo.php file — delete it immediately after use. On cPanel or Plesk servers, the admin interface exposes the PHP version per domain. List each site in a spreadsheet with the following columns: domain, active PHP version, CMS or framework, CMS version, date of last dependency update, and criticality level (e-commerce, brochure, intranet). This map is the prerequisite for any planning: without it, you cannot prioritize or estimate the migration workload.",{"type":54,"title":55,"headers":56,"rows":61},"comparison","PHP 8.2, 8.3 and 8.4 — lifecycle, EOL and key features",[57,58,59,60],"Criteria","PHP 8.2","PHP 8.3","PHP 8.4",[62,67,72,76,79,82,85,87,89,91,93,95],[63,64,65,66],"Release date","December 8, 2022","November 2023","November 21, 2024",[68,69,70,71],"Active support end","December 31, 2024","December 31, 2025","December 31, 2026",[73,71,74,75],"Security support end (EOL)","December 31, 2027","December 31, 2028",[77,78,78,78],"Readonly classes","Yes",[80,81,78,78],"Typed class constants","No",[83,81,81,84],"Property hooks","Yes (major feature)",[86,81,81,78],"Asymmetric visibility",[88,81,78,78],"json_validate()",[90,78,78,78],"Laravel 12 compatibility",[92,81,78,78],"Laravel 13 compatibility",[94,78,78,78],"Symfony 7.x compatibility",[96,81,81,97],"Symfony 8.x compatibility","Yes (8.4 required)",{"type":36,"title":99,"body":100},"Testing compatibility before migrating","Migrating without prior testing is the primary cause of production incidents. Two complementary tools cover the bulk of static analysis. PHPCompatibility is a ruleset for PHP_CodeSniffer: it scans your source code and reports removed function calls, deprecated parameters and behavioral changes between versions. Install it via Composer (`composer require --dev phpcompatibility\u002Fphp-compatibility:\"^10.0.0@dev\"`) and run it with the target `--runtime-set testVersion 8.3`. PHPStan, in turn, performs static type analysis: configured at level 5 or above, it detects dynamic properties (deprecated since PHP 8.2, still deprecated in 8.4; becoming an error is planned for PHP 9), type incompatibilities and incorrect method signatures. The recommended approach is to run PHPStan first on the current codebase to establish a baseline, then switch the target PHP version to 8.3 or 8.4 in your phpstan.neon to identify gaps. These two static passes do not replace functional tests, but they let you prioritize files to fix before even opening a staging environment.",{"type":102,"title":103,"steps":104},"steps","Migration checklist to PHP 8.3 or 8.4",[105,108,111,114,117,120,123,126],{"title":106,"body":107},"Map your stack and establish the migration order","List all sites running PHP 8.2 with their CMS, framework and criticality level. Prioritize e-commerce sites and sensitive applications first; static brochure sites can be handled last.",{"title":109,"body":110},"Run static analysis with PHPCompatibility and PHPStan","Run `phpcs --standard=PHPCompatibility --runtime-set testVersion 8.3` on the source directory. Fix removed function calls and undeclared dynamic properties before moving to the next step.",{"title":112,"body":113},"Update Composer dependencies in an isolated environment","In a staging environment with PHP 8.3 or 8.4 active, run `composer update` and resolve version conflicts. Verify that each critical package declares compatibility with the target PHP version in its `composer.json`.",{"title":115,"body":116},"Validate with the existing test suite","Run PHPUnit, Pest or end-to-end tests against the target PHP version. If the project lacks automated tests, document the critical paths tested manually (authentication, cart, forms, webhooks).",{"title":118,"body":119},"Update the CMS or framework if needed","WordPress: verify each plugin's compatibility with PHP 8.3. Laravel: if the project is still on Laravel 11, consider upgrading to Laravel 12 at the same time as the PHP migration. Symfony: Symfony 7.4 LTS is compatible with PHP 8.2 through 8.4 without changing the framework.",{"title":121,"body":122},"Switch the PHP version in production","On a VPS with PHP-FPM, update the virtual host nginx pool to point to the php8.3-fpm.sock or php8.4-fpm.sock socket. Reload nginx and PHP-FPM. On a managed host, change the version via the control panel or CLI.",{"title":124,"body":125},"Monitor error logs for 48 hours","Enable PHP logging (`log_errors = On`, `error_log = \u002Fvar\u002Flog\u002Fphp\u002Ferror.log`) and watch for notices, warnings and fatal errors for at least two business days after the switch.",{"title":127,"body":128},"Update the inventory and notify the client","Update your mapping spreadsheet with the new PHP version and migration date. Send a closing note to the client confirming the upgrade — this traceability is useful during compliance audits.",{"type":130,"body":131},"tip","On a VPS, PHP-FPM allows you to run multiple versions in parallel without conflict: each nginx virtual host points to a separate FPM socket (`php8.2-fpm.sock`, `php8.3-fpm.sock`, `php8.4-fpm.sock`). This architecture lets you migrate site by site, keeping projects not yet tested on PHP 8.2 while validated projects already run on 8.3 or 8.4. Typical nginx configuration: `fastcgi_pass unix:\u002Frun\u002Fphp\u002Fphp8.3-fpm.sock;`. Start with the least critical sites to refine your process and verify that your deployment scripts correctly handle PHP-FPM reload.",{"type":36,"title":133,"body":134},"Frameworks and CMS — PHP 8.2 drop dates","Understanding your frameworks' schedules is essential for anticipating migration constraints. Laravel 12, released on February 24, 2025, supports PHP 8.2 to 8.5 and receives security fixes until February 24, 2027 — no urgency to upgrade the framework version. However, Laravel 13 (released Q1 2026) requires PHP 8.3 as a minimum: any application wishing to migrate to Laravel 13 must first move to PHP 8.3. Symfony 7.x (all versions from 7.0 to 7.4) requires PHP 8.2 minimum; the LTS version Symfony 7.4, released in November 2025, is supported until November 2029 — it is compatible with PHP 8.3 and 8.4. Symfony 8.x requires PHP 8.4 minimum. WordPress recommends PHP 8.3 or greater, and premium plugins progressively condition their support on PHP 8.3 or higher. These milestones should appear in your migration plan: a framework constraint can trigger a PHP upgrade earlier than expected.",{"type":36,"title":136,"body":137},"Automating version monitoring across your agency stack","A manual inventory ages quickly: clients add plugins, change deployment providers, or install new applications without notification. Automating version monitoring lets you stay informed without daily effort. Several complementary approaches exist. A simple cron script can query `php -v` over SSH on each server and write the result to a central report file — a tool like Ansible or Fabric allows parallelizing this collection across dozens of hosts. Server monitoring tools (Netdata, Munin, or specialized agents) expose the PHP version in their metrics and can trigger alerts if an unauthorized version appears. On a ServOrbit VPS, the same script can list the sockets in `\u002Frun\u002Fphp\u002F` to see which PHP-FPM versions are running. The goal is that discovering a site still on PHP 8.2 after December 31, 2026 triggers an automatic alert — not an annual audit.",{"type":36,"title":139,"body":140},"Troubleshooting — 4 common migration errors","PHP 8.2 → 8.3\u002F8.4 migrations follow recurring failure patterns. First, **dynamic properties**: since PHP 8.2, adding an undeclared property to a class is deprecated; in PHP 8.4, it is still a deprecation, and turning it into an error is planned for PHP 9. The symptom is a `Creation of dynamic property` deprecation notice, often followed by unexpected behavior. The fix: declare all properties in the class or add the `#[\\AllowDynamicProperties]` attribute for legacy classes. Second, **missing PECL extensions**: PHP 8.3 and 8.4 do not compile the same extensions by default depending on the distribution; extensions like `imagick`, `redis` or `swoole` must be explicitly reinstalled for the new version. Check with `php8.3 -m | grep redis`. Third, **Composer version conflicts**: a composer.lock resolved under PHP 8.2, or a `config.platform.php` constraint still pinned to 8.2, can lock package versions that are incompatible with PHP 8.3 or 8.4 — always rerun `composer update` from scratch in the staging environment. Fourth, **deprecated ini directives**: changing `session.sid_length` or `session.sid_bits_per_character` is deprecated since PHP 8.4; an uncleaned `php.ini` that still sets them produces deprecation notices at PHP-FPM startup and mask real application errors.",{"type":36,"title":142,"body":143},"Planning ahead to manage your client stack smoothly","For an agency managing dozens of sites, the PHP migration is a multi-site project to pilot several months in advance. Establish a plan by decreasing priority: e-commerce sites and critical management applications first, brochure sites last. Communicate to your clients the risks of staying on PHP 8.2 after December 31, 2026 — a dated memo explaining the security and compliance implications is usually enough to unlock the agreement and budget needed. Integrate PHP version upgrades into your annual maintenance contracts: a dedicated line avoids renegotiating each migration. For projects using Docker from the start, the migration reduces to changing a base image in the Dockerfile and rerunning tests — a half-day of work rather than a server intervention.",{"type":36,"title":145,"body":146},"ServOrbit VPS with configurable PHP-FPM","On a ServOrbit VPS, multiple PHP-FPM versions can coexist on the same machine and each virtual host points to the version of its choice. Upgrading is done by modifying a single line of nginx configuration and reloading PHP-FPM — no server restart, no interruption to other hosted sites. For agency stacks, a dedicated VPS per client or a shared VPS with PHP-FPM isolation per pool provides the flexibility to migrate site by site according to your schedule, without depending on a managed hosting provider's timeline. Keeping the active PHP version of each domain up to date in your inventory remains the prerequisite for anticipating the next lifecycle deadlines.","Manage your client site portfolio from a single platform","ServOrbit provides VPS environments built for agencies: multi-site deployment, multiple PHP-FPM versions side by side, and infrastructure designed for planned migrations.","Our solutions for agencies","\u002Fsolutions\u002Fagences",[152,173,195],{"id":153,"slug":154,"slugs":155,"title":159,"excerpt":160,"readTime":161,"views":162,"isPinned":19,"noindex":19,"publishedAt":163,"updatedAt":164,"category":165,"categories":170,"featuredImage":30,"bgImage":31,"posterImage":172,"relatedSolution":30},503,"change-php-version-site-cpanel",{"fr":156,"en":154,"ar":157,"es":158},"changer-version-php-site-cpanel","تغيير-إصدار-php-للموقع-في-cpanel","cambiar-version-php-sitio-cpanel","Change your site's PHP version in cPanel","Choose your site's PHP version in cPanel: open the site page, the Settings tab, then pick the version you want from the list.",3,2,"2026-10-23T00:00:00+00:00","2026-10-24T03:34:36+00:00",{"id":166,"name":167,"slug":168,"color":169,"icon":168},12,"Guides","guides","bg-emerald-500\u002F10 text-emerald-400",[171],{"id":166,"name":167,"slug":168,"color":169,"icon":168},"\u002Fblog\u002Fcovers\u002Fchanger-version-php-site-cpanel-poster.svg",{"id":174,"slug":175,"slugs":176,"title":180,"excerpt":181,"readTime":182,"views":23,"isPinned":19,"noindex":19,"publishedAt":183,"updatedAt":184,"category":185,"categories":189,"featuredImage":30,"bgImage":31,"posterImage":191,"relatedSolution":192},39,"deploy-your-applications-with-caddy-on-a-vps",{"fr":177,"en":175,"ar":178,"es":179},"deployer-avec-caddy","انشر-تطبيقاتك-باستخدام-caddy-على-خادم-vps","desplegar-con-caddy","Caddy as a reverse proxy on VPS: complete guide","Install and configure Caddy as a reverse proxy on your VPS: automatic Let's Encrypt HTTPS, multi-app setup, security hardening and common error troubleshooting.",8,"2026-05-12T00:00:00+00:00","2026-09-25T23:43:04+00:00",{"id":161,"name":186,"slug":187,"color":188,"icon":187},"Deployment","deploiement","bg-success\u002F10 text-success",[190],{"id":161,"name":186,"slug":187,"color":188,"icon":187},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caddy-poster.svg",{"categorySlug":193,"appSlug":194},"application-deployment-devops","caddy",{"id":196,"slug":197,"slugs":198,"title":202,"excerpt":203,"readTime":204,"views":18,"isPinned":19,"noindex":19,"publishedAt":205,"updatedAt":206,"category":207,"categories":208,"featuredImage":30,"bgImage":31,"posterImage":210,"relatedSolution":30},37,"deploy-your-applications-with-nginx-proxy-manager-on-a-vps",{"fr":199,"en":197,"ar":200,"es":201},"deployer-avec-nginx-proxy-manager","انشر-تطبيقاتك-باستخدام-nginx-proxy-manager-على-خادم-vps","desplegar-con-nginx-proxy-manager","Deploy your applications with Nginx Proxy Manager on a VPS","Manage domains, SSL and reverse proxy for several services on a VPS with Nginx Proxy Manager: installation, Docker networks, 502 troubleshooting and configuration.",10,"2026-05-14T00:00:00+00:00","2026-11-08T01:13:14+00:00",{"id":161,"name":186,"slug":187,"color":188,"icon":187},[209],{"id":161,"name":186,"slug":187,"color":188,"icon":187},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-nginx-proxy-manager-poster.svg",true,1794270466732]