The hard part is not the vulnerability. It is the target. The two things that usually stop this class of bug are already handled. Address randomisation (ASLR) is defeated by the memory leak, which hands the attacker live addresses inside a PHPSESSIDresponse cookie. And once the flaw is reached, the primitive is reliable.
What is left is per-target precision. A working exploit is pinned to one build: the exact symbol offsets (for example zifsystem and zvalptr_dtor) and the heap-grooming "magic values" that place attacker data where the freed pointer will read it. Change the PHP version, the distribution, the compiler, the extensions or the CPU architecture and those numbers move, so the proof-of-concept has to be re-tuned. Some configurations add friction too, mainly around reliably forcing the out-of-memory condition, but none of it is a wall.
So the realistic threat is targeted attacks, not one universal exploit. And the per-target data an attacker needs is often handed to them: a PHP version in a verbose error page, an X-Powered-By: PHP/8.x.y or Server header, a recognisable build. Leak the version and matching the offsets becomes mechanical: exactly the kind of repetitive work automation makes cheap.