[wp-trac] [WordPress Trac] #54826: PHP 8.0: Fatal errors are no longer suppressed by `@`.
WordPress Trac
noreply at wordpress.org
Sat Jan 15 05:56:07 UTC 2022
#54826: PHP 8.0: Fatal errors are no longer suppressed by `@`.
----------------------------+--------------------
Reporter: costdev | Owner: (none)
Type: task (blessed) | Status: new
Priority: normal | Milestone: 6.0
Component: General | Version:
Severity: normal | Keywords: php8
Focuses: |
----------------------------+--------------------
**Overview**
From [https://www.php.net/manual/en/migration80.incompatible.php PHP 8:
Backward Incompatible Changes]:
The @ operator will no longer silence fatal errors (E_ERROR,
E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR, E_RECOVERABLE_ERROR, E_PARSE)
**Example case**
Initially reported by @swb1192 on Slack, a Fatal Error was thrown when
`disk_free_space()` was called during a plugin update. `disk_free_space()`
had been disabled by the host.
In earlier versions of PHP, if a function was unavailable (i.e. disabled
via `php.ini`), this would silently fail. In PHP 8+, the Fatal Error is
thrown.
**Typical fix**
This is typically fixed by using `function_exists()` before calling the
function that may be unavailable. If the check fails, return the
function's documented failure value. In the case of `disk_free_space()`,
this value is `false`.
**Notes**
- `disk_free_space()` was reported on a popular plugin which also used the
function. The issue was resolved by using the fix noted above. Other
plugins have also used this fix for the same reason.
- I have reached out in the #hosting-community Slack channel to request
functions that are commonly disabled on hosting platforms so that we can
target these functions ahead of other instances being reported.
- Efforts are ongoing to reduce the use of `@` in Core. However, until
such time as that has been achieved, the fix above can be used, when
appropriate, at least as a stop-gap fix.
- Other occurrences of Fatal Errors when using `@` should be reported here
so that we can target these, or related tickets linked in the comments
below.
- There are currently ~269 uses of `@`. 239 of these occur in Core, and 30
occur upstream.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/54826>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list