在我的PHP代码中,我试图访问我在/ etc / profile中导出的linux系统环境变量。
当我在终端输入“printenv”时,我可以看到变量(称为MEMCACHED_1)已设置。
但我的PHP没有看到该变量,它既不在$ _ENV数组中,也不能用getenv函数访问它。
在我的php.ini文件中,我设置了variables_order = "EGPCS"
。这为$ _ENV添加了很多变量,但MEMCACHED_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
访问所需的变量,或者在此处的评论建议之前致电$_ENV
:http://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
。