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

01Warnings become errors

Undefined variables become errors

The change, the fix, the source ↗
02Warnings become errors

Undefined property reads become errors

The change, the fix, the source ↗
03Deprecated in 8.2

Goodbye, ${} interpolation

The change, the fix, the source ↗
04Deprecated in 8.1

False is not an empty array

The change, the fix, the source ↗
05Deprecated in 8.1

Replace the Serializable interface

The change, the fix, the source ↗
06Deprecated in 8.4

Keep session IDs out of URLs

The change, the fix, the source ↗
07Deprecated in 8.4

Make 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.