繁体   English   中英

getenv() 在 Apache 上不起作用

[英]getenv() doesn't work on Apache

我在 Windows 上设置了一个环境变量(系统属性->高级->环境变量)并尝试从 php 代码访问它,如下所示:

getenv('ENV');

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

我读到出于安全原因,我必须使用PassEnv指令才能让 Apache 识别环境变量。 我试图在.htaccess.conf文件中使用它,但没有成功。

想了解我缺少什么,以及我应该怎么做才能访问环境变量。

  • PHP 5.6
  • 阿帕奇 2.0

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

编辑:

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

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

  1. 设置环境变量需要在 64 位上重启
  2. https://serverfault.com/questions/8855/how-do-you-add-a-windows-environment-variable-without-rebooting

编辑:

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

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

如何让您的代码读取更新的环境变量:

  1. 停止 Apache 服务器进程
  2. 关闭 Xampp 控制面板窗口

然后您可以重新打开窗口并重新启动该过程。

我和你有同样的问题,但是当我这样做时,它起作用了。 只要窗口打开,Apache 就没有注册新的环境变量。 设置新变量后,Windows 会向所有程序发送一条消息,以便下次打开这些程序时,它们将注册新变量。 任何打开的窗口都不会注册更改。

如果通过控制面板完成,还要确保在更改/设置变量后选择“确定”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM