getenv()如何获取Nginx解析的HTTP请求参数?Spawn-FCGI环境变量疑问
FastCGI环境变量相关问题解答
为什么终端env命令找不到fastcgi_param设置的变量?
这些变量既不是系统全局环境变量,也不属于当前终端会话的环境变量——它们是Nginx在处理动态请求时,专门传递给FastCGI服务进程的私有临时参数,只存在于CGI进程的运行环境里,和终端的shell环境完全隔离,所以终端执行env根本查不到。
getenv()是怎么拿到这些参数的?
当Nginx碰到需要FastCGI处理的请求时,会照着fastcgi.conf里的fastcgi_param配置,把这些参数打包进FastCGI协议的请求包,发给spawn-fcgi。spawn-fcgi在启动对应的CGI子进程时,会把这些参数临时塞进CGI进程的环境变量列表里。而getenv()本来就是用来读取当前进程自身的环境变量的,所以自然能直接获取到这些参数。
这些变量是spawn-fcgi临时创建的吗?
对的,这些环境变量是spawn-fcgi在启动CGI子进程时动态设置的,属于该CGI进程的私有环境。等CGI进程处理完请求退出后,这些变量就会被销毁,不会留在系统环境或者其他进程里。
内容的提问来源于stack exchange,提问作者LandP
相关产品推荐
相关产品推荐

