微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用nginx / php-fpm设置$ _ENVfka $ HTTP_ENV_VARS

在apache环境中setenv的等价物是什么? 与Apache我能够例如设置环境“SOMEE​​NV”,并通过$ _ENV ['SOMEE​​NV']在PHP中访问它 – 但我不知道如何用Nginx + PHP-fpm做到这一点。

我最初以为我只需在我的PHP-fpm池的configuration中设置ENV [SOMENEV] = test,但是var_dump($ _ ENV)仍然不会返回任何结果。

任何提示

将多个驱动器号分配给variables

从Java执行源命令

为没有login的用户设置环境variables

为什么Perl的glob为其他调用返回undef?

BAT文件:奇怪的SET(?)行为

如何将输出存储在Windows的“where”命令中的variables中?

使用maven 2.x设置环境variables

从PowerShell设置时,如何处理Windows PATHvariables扩展?

循环通过文件保存到variables

在不同的c文件中访问pthread中的全局variables

Nginx没有办法影响PHP的环境,因为它没有将PHP解释器嵌入到其进程中。 它通过fastcgi_param指令将参数传递给PHP。 你可以添加一个你设置其余的参数,并通过$ _SERVER访问它:

location ~ .PHP$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param SOMEENV test; fastcgi_pass PHP; }

请注意$_ENV变量的可用性取决于PHP-fpm使用的PHP.ini中的variables_order的设置。 认是EGPCS ,其中E是环境,但是在Ubuntu 12.04上,我发现它是GPCS 。 PHP.ini本身带有$_ENV的警告:

; This directive determines which super global arrays are registered when PHP ; starts up. G,P,C,E & S are abbreviations for the following respective super ; globals: GET,POST,COOKIE,ENV and SERVER. There is a performance penalty ; paid for the registration of these arrays and because ENV is not as commonly ; used as the others,ENV is not recommended on productions servers.

它建议使用始终可用的getenv() 。 我发现我在FPM池中设置的变量可以通过这种方式获取

我在PHP-fpm.d / http://www.conf中设置了所有env […] =变量在尝试了一个周末之后,我发现访问这些变量的唯一方法是使用$ _SERVER,$ _ENV不能访问这些变量。 有人可以提出一个想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐