在我的 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
(或User
Apache 配置中的任何变量)。因此,您还应该检查printenv
正确的用户:
sudo su -l www-data -c 'printenv'
-- 这应该有行USER=www-data
或类似的东西(不是root,不是你的登录名)。确保MEMCACHED_1
在那里设置。