在我的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
设置在那里。