getenv()不适用于Apache

时间:2016-06-26 14:33:01

标签: php apache

我在Windows (系统Propeties-> Advanced->环境变量)上设置环境变量,并尝试从php代码访问它,如下所示:

getenv('ENV');

我的php在Xampp的Apache服务器上运行,它返回false

我读到这一点,出于安全原因,我必须使用PassEnv指令,以便Apache识别环境变量。我尝试在.htaccess.conf文件中使用它,但没有成功。

想了解我所缺少的内容,以及如何访问环境变量。

  • PHP 5.6
  • Apache 2.0

2 个答案:

答案 0 :(得分:1)

您必须重新启动PC才能通过PHP读取新环境。这就是我的方式。我通过(System Propeties->Advanced->Environment Variables)设置了一个环境变量,然后检查它返回bool(false)。我重新启动了我的电脑并再次检查,现在它工作了。所以我建议你重新启动并再次检查。

编辑:

此外,如果删除Windows环境变量并在PHP中检查变量而不重新启动;它仍将显示价值。这意味着环境变量会暂时存储,直到PC重新启动。我对Windows API没有太多想法,但这是它的工作方式。

我还有两个可以帮到你的有用链接

  1. Setting environment variables requires reboot on 64-bit
  2. https://serverfault.com/questions/8855/how-do-you-add-a-windows-environment-variable-without-rebooting
  3. 编辑:

    还有另一种解决方案,我在php.net中将php.ini文件[variables_order = "GPCS"]中的变量顺序更改为[variables_order = "EGPCS"]并重新启动APACHE。 EGPCS是(Environment, Get, Post, Cookie, and Server)变量解析。这将创建$_ENV变量。尝试通过$_ENV['ENV'];

    访问环境变量

答案 1 :(得分:0)

尝试在 php.ini 文件中将变量variable_order设置为"EGPCS",而不是开发人员和生产值"GPCS",然后重新启动服务器进程。