这些变量有相当大一部分是web server传递给php的
以nginx为例,当一个request过来的时候,nginx先查看自己的配置文件是如何定义把一些值传递给fastcgi的(nginx的配置文件fastcgi_params就是做这个用的)
当nginx初始化好这些变量以后,就把它们通过fastcgi的端口把这些值传递进了php,大部分这些变量都能在$_SERVER里看到。
当然,nginx还会同时把客户端发送过来的请求原封不动的传递给php fcgi来处理,php自己会通过解析这些请求来获取$_GET以及$_POST等超级变量里面的值。
其实正是因为php默认帮我们做了事情,所以使用php来做网络程序才变的如此简单——当然也因为如此所以导致php框架的泛滥