yeah thats what was confusing me too....
i never checked the source code, but i was always under the impression all post get cookie data etc.. was all passed to php raw, and php parsed it into individual variables etc...
which would make you wonder why does query_string have the data but not _GET
the only thing i can think of to explain that, is that maybe query_string is passed to php as an environment variable(for example i know apache has that variable available)
so it seems like php isnt receving the regular data, only env variables. but at the same time ENV is empty too, but the GET values are in the argv array.....very odd
i dont understand much about how cgi works on the lower levels,
but i do know if for example your running php and use exec() to spawn another process and execute another php script, any values/variables etc that you pass in the exec() call are passed to the spawned php script through the argv array....just like whats showing in your var dump.
from what i understand about cgi, every request is a new process(unless its fastcgi), but i would think the webserver has a different way to pass variables to php running as a cgi than just argv. just seems like its acting like it wasnt meant to be run however it is your running it.
sorry but thats about the extent of my knowledge 😃
i would try reinstalling it and playing w/ diff config options, but maybe you understand cgi better and can troubleshoot futher.
good luck