PHP keeps some state in request-scoped globals — error, session, object and extension state. Normally it is reset at the end of each request. A fatal error, including out-of-memory, can skip that reset, and warnings during shutdown can repopulate error state after it was cleared.
The memory those globals point to is freed when the request ends. If the same worker then runs code before normal request initialisation — INI diagnostics or session upload-progress handling — it uses freed memory. Workers that serve many requests in a row (PHP-FPM, mod_php children) are what makes this reachable.