PHP $ _ENV vs Linux环境(Ubuntu)

时间:2013-04-25 23:29:14

标签: php linux

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

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

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

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

1 个答案:

答案 0 :(得分:0)

你究竟是什么php.ini?有/etc/php5/apache2/php.ini(Apache模块运行的脚本使用的配置)和/etc/php5/cli/php.ini(命令行脚本使用的配置)。后者在Ubuntu上有variables_order = "GPCS"默认设置。

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

如果您使用的是Apache模块,您可能希望以[{1}}而不是$_SERVER访问所需的变量,或者在此处的评论建议之前致电$_ENVhttp://php.net/manual/en/reserved.variables.environment.php < / p>

<强>更新

要记住的另一件事:Apache模块启动的PHP进程是使用用户getenv()运行的(或者Apache配置中的www-data变量)。因此,您还应该检查User是否有正确的用户:

printenv

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

相关问题