PHP $_ENV vs Linux environment (Ubuntu)


PHP $_ENV vs Linux environment (Ubuntu)

在我的PHP代码中,我试图访问我在/etc/profile中导出的linux系统环境变量。

当我在终端中键入"printenv"时,我可以看到变量(称为MEMCACHED_1(已设置。

但我的PHP没有看到那个变量,它既不在$_ENV数组中,也不能用getenv函数访问它。

在php.ini文件中,我设置了variables_order = "EGPCS"。这为$_ENV添加了很多变量,但MEMCACHED_1仍然不存在。

php.ini到底是什么意思?有/etc/php5/apache2/php.ini(Apache模块运行的脚本使用的配置(和/etc/php5/cli/php.ini(命令行脚本使用的设置(。后者将variables_order = "GPCS"作为Ubuntu上的默认设置。

如果您是从命令行运行代码,请尝试更改/etc/php5/cli/php.ini并设置variables_order = "EGPCS"

如果您使用的是Apache模块,您可能希望以$_SERVER而不是$_ENV的形式访问所需的变量,或者按照此处的注释建议在之前调用getenv():http://php.net/manual/en/reserved.variables.environment.php

更新

需要记住的另一件事是:Apache模块启动的PHP进程与用户www-data(或者Apache配置中User变量所说的任何内容(一起运行。因此,您还应该检查printenv是否有正确的用户:

 sudo su -l www-data -c 'printenv'

--它应该有USER=www-data行或类似的行(不是root,不是您的登录名(。确保MEMCACHED_1设置在那里。