Article
Migrating from PHP 8.2 to PHP 8.3
PHP 8.3 upgrade notes highlighting range() changes, negative array index behavior, Date exceptions, and stack-size guards.
PHP 8.3 remains in security support until 2027-12-31 (verified 2026-08-09). Most 8.2 applications move cleanly; the breaks that bite are subtle. Official: migration83 incompatible.
range() behavior
range() gained stricter validation and changed some string/number boundary cases. Example called out by php.net: range('9', 'A') now yields characters through the ASCII range rather than integers down to 0.
# Verify any range() used for identifiers, letters, or mixed boundaries
$letters = range('9', 'A'); // 8.3: ['9', ':', ..., 'A']
Negative indexes on empty arrays
Assigning a negative index $n to an empty array now makes the next implicit index $n+1 instead of 0. Audit append loops that previously assumed a reset to zero.
Date extension exceptions
Date operations increasingly throw Date-specific exceptions/errors instead of warnings. Catch narrowly in parsers that previously ignored bad input.
proc_get_status caching
Multiple calls to proc_get_status() on POSIX now return consistent cached results; proc_close() exit codes align. Process wrappers may need updates if they depended on the old “first call wins” quirk.
Run compatibility checker and full suite under 8.3 before promoting. Next: 8.3→8.4.
Related scanners: PHP Version Compatibility Checker · PHP Deprecated Checker.
Related reading
- Composer Modernization Center Add Composer to legacy PHP projects, migrate includes to autoloading, set platform constraints, and replace a…
- PHP 5 to Modern PHP: Complete Incremental Migration Guide A deep, production-minded path from PHP 5.x codebases to supported PHP 8.x: removed extensions, charset, PDO,…
- PHP Security Modernization for Legacy Applications Upgrade inherited PHP security practices: prepared statements, password hashing, sessions, CSRF, XSS escaping…
- PHP 7 to PHP 8 Migration Guide Deep guide to PHP 8.0 breaking changes that matter for PHP 7 applications, with upgrade tactics through suppo…
- Inheriting a Legacy PHP Application A first-30-days playbook for developers handed an unfamiliar PHP codebase: runtime truth, risk triage, and sa…