Article

PHP 7 to PHP 8 Migration Checklist

A concise gate checklist for moving PHP 7 applications onto PHP 8.x before flipping production FPM pools.

Use this page as a release gate. For explanations, code samples, and breaking-change narratives, follow the deep guide PHP 7 to PHP 8 migration. Official notes start at migration80.

Preflight

  • □ Inventory SAPIs (FPM, CLI, cron) and extension lists match across environments
  • □ Composer platform.php set to the intended 8.x minor (prefer a supported branch: 8.2–8.5 as of 2026-08-09)
  • □ Scan with compatibility checker and deprecated checker
  • □ Grep for removed APIs: each(, create_function(, money_format(, get_magic_quotes, old constructors

Code readiness

  • □ PHPUnit / integration suite green on PHP 8 in CI
  • □ PHPStan/Psalm level raised; @ handlers updated for non-zero error_reporting masks
  • □ Null passed into internal non-nullable parameters cleaned (8.1 deprecations)
  • □ Dynamic properties inventoried if targeting 8.2+
  • □ Named arguments / attributes adopted only after baseline boot succeeds

Runtime & deploy

  • □ Docker/base images, Ansible, and panel selectors updated together
  • □ OPcache validated; JIT left off unless measured for your workload
  • □ Xdebug 3 path maps verified on staging
  • □ Rollback image tagged and tested
  • □ 24–48h error-rate watch after cutover

Also see 7.4 → 8.x and migration center.

Related reading