1

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

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

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

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

4

1 回答 1

0

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(或UserApache 配置中的任何变量)。因此,您还应该检查printenv正确的用户:

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

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

于 2013-04-25T23:40:04.447 回答