If it is running on your CPU, then it is running on your machine.
When the compilation happens can be different (interpretted, JIT, ahead of time) but those are just design choices.
I'm not sure you understood the point. It means nothing to claim that deep down it's all opcodes or electrons flowing. What matters is being able to transform the code targeting the high level interface to the lowest level interface in a way that remains usable and regression-free. Sometimes compilers for widely popular languages introduce bugs and weird behavior too.
Compilers introduce bugs, yes. Compilers are code, and code can have bugs and regressions.
But the comments above make no mention of bugs are regressions. They said compiling php into machine code is "impossible."
Going form high level interfaces to lower level is the easy part. It's what all interprets and compilers do already.
Having different intermediate forms is also a very common practice. There is nothing special about php here. Except for maybe it's underserved reputation of being an obtuse language.
They're using a derived language called Hack.
> Does the compiled code use a garbage collector? Or reference counting?
Not sure but it's open source so I'm sure you can dig up the answers one way or another: https://github.com/facebook/hhvm
It's not the end of the world because they have deep pockets and a problem domain where preserving the interface (I.e., keep everything still running on PHP) and optimizing the infrastructure that provides it is more cost effective and least disruptive than switching to a tech stack that is more performant.