PHP 8.4: E_STRICT constant deprecated
All of the errors, warnings, and notices in PHP have an error level assigned to them, and using the error_reporting and set_error_handler functions, PHP applications can control which errors are reported and override the default error-handling behavior with a custom callback.
PHP has a wide range of error levels, with the E_ALL constant being the bit-mask OR of all the E_ constants, which means the setting error reporting or the error handler to report/handle all errors, warnings, and notices.
One of the error levels PHP previously emitted was E_STRICT, on code that was not "strictly" correct to ensure interoperability and forward compatibility. PHP 7.0 converted the majority of existing E_STRICT warnings to E_NOTICE, and since PHP 8.0, all E_STRICT notices have changed to E_NOTICE.
Because all of the E_STRICT notices are upgraded to E_NOTICE since PHP 8.0, PHP 8.5 deprecates the E_STRICT constant.
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
Constant E_STRICT is deprecated
Suggested Replacement
PHP core and core extensions since PHP 8.0 and later do not emit E_STRICT notices at all. It is safe to assume that any PHP applications that run on PHP 8.0 and later will never encounter E_STRICT notices, and error reporting and handling can be safely updated to ignore E_STRICT notices.
- error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
+ error_reporting(E_ALL & ~E_DEPRECATED);
On PHP 7 series before PHP 7.4, the following functions conditionally emit E_STRICT notices:
PHP applications that must support PHP 7.3 or older versions can conditionally call the error_reporting and set_error_handler functions with appropriate error levels:
- error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
+ if (PHP_VERSION_ID >= 70400) {
+ error_reporting(E_ALL & ~E_DEPRECATED);
+ }
+ else {
+ error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
+ }
E_ALL constant value change
The assigned value of the E_ALL constant has changed from 32767 to 30719 in PHP 8.4.
Backward Compatibility Impact
The E_STRICT constant is deprecated in PHP 8.4. Using the constant anywhere in PHP code now emits a deprecation notice in PHP 8.4 and later.
The E_STRICT constant will be removed in PHP 9.0.
Custom error handlers and error reporting controls that selectively exclude E_STRICT notices can adjust them to ignore E_STRICT notices to avoid the deprecation notice.
Custom and PECL extensions emitting
E_STRICTnoticesIt is theoretically possible for PECL and custom PHP extensions to emit
E_STRICTnotices. However, this is unlikely because majority of PECL extensions have moved toE_NOTICE.