Accepted changes. Time to prepare.
What's coming
in PHP 9.
The next major has no release date. These changes have passed their votes and target PHP 9. Start with the warnings your app already gives you.
Published October 14, 2026 · Last verified October 14, 2026
Undefined variables become errors
The change, the fix, the source ↗02Warnings become errorsUndefined property reads become errors
The change, the fix, the source ↗03Deprecated in 8.2Goodbye, ${} interpolation
The change, the fix, the source ↗04Deprecated in 8.1False is not an empty array
The change, the fix, the source ↗05Deprecated in 8.1Replace the Serializable interface
The change, the fix, the source ↗06Deprecated in 8.4Keep session IDs out of URLs
The change, the fix, the source ↗07Deprecated in 8.4Make nullable types explicit
The change, the fix, the source ↗Under discussion
The conversation isn't the release.
Proposals such as dropping 32-bit builds and nullable cast operators appear in the RFC index's discussion section. They are not confirmed PHP 9 changes. A proposal can change, be declined or target a different release.
This guide is a starting set, not an exhaustive PHP 9 changelog. Follow the official RFC index for other accepted cleanup work.