PHP conserve une partie de son état dans des variables globales propres à la requête — état d’erreur, de session, d’objet et d’extension. Il est normalement réinitialisé à la fin de chaque requête. Une erreur fatale, y compris un manque de mémoire, peut sauter cette réinitialisation, et des avertissements pendant l’arrêt peuvent remplir à nouveau l’état d’erreur après son effacement.
La mémoire vers laquelle pointent ces globales est libérée à la fin de la requête. Si le même worker exécute ensuite du code avant l’initialisation normale de la requête — diagnostics INI ou traitement de progression d’envoi —, il utilise de la mémoire libérée. Ce sont les workers qui enchaînent de nombreuses requêtes (PHP-FPM, processus enfants mod_php) qui rendent cela atteignable.