DISABLED: readonly [
"sleep",
"usleep",
"time_nanosleep",
"time_sleep_until",
"uniqid",
"exec",
"shell_exec",
"system",
"passthru",
"proc_open",
"popen",
"pclose",
"proc_get_status",
"proc_close",
"proc_terminate",
"extension_loaded",
"get_loaded_extensions",
"get_extension_funcs",
] = ...
Built-ins removed through
disable_functions(PHP 8 unregisters them) so the stand-ins can bind.gettimeofday()until the microsecond changes, which never happens on a frozen clock.EXTENSIONS_FIX), so an extension reads loaded only when a shim covers its whole API.Each degraded call keeps its name, so feature detection passes, and records a status-report row through
Degradation::record().