【问题标题】:Reading user environmental variable in php在php中读取用户环境变量
【发布时间】:2012-10-06 13:52:16
【问题描述】:

我在 Windows 环境变量 -> 用户变量中定义了一个环境变量

$MY_VARIABLE=mypath

在 php 中我尝试像下面这样访问它

<?php
echo $_ENV["MY_VARIABLE"];

但它不打印任何东西。我在这里遗漏了什么还是 PHP 无法访问用户环境变量?

编辑:我将 PHP 作为 Apache 模块运行(我最初遗漏的重要信息)。

【问题讨论】:

  • 但是,如果您只是添加了它,请先重新启动(或者让自己熟悉环境变量是什么以及它们的范围是什么)。还有var_dump($_ENV);重启后说什么?
  • 哦! var_dump($_ENV) 本身是空的!
  • 执行脚本的是什么;它在什么环境下运行?

标签: php environment-variables


【解决方案1】:

$_ENV是空的,因为variables_order settings in PHP

编辑你的 PHP.INI

改变

  variables_order = "GPCS"

 variables_order = "EGPCS"

如果它不尝试使用.htaccess 来实现这一点,它现在应该可以工作了

将以下内容添加到您的.htaccess

SetEnv foo bar

你可以通过 PHP 获取它

var_dump(getenv('foo'),$_ENV);

【讨论】:

  • 是的,试过了,但它仍然没有出现在 $_ENV 中。我上面评论中的答案很好地解释了这一点。
  • 尝试使用putenv,更改后不要忘记重启服务器
  • 这可以工作,但只有一个 php 站点可以使用,我有多个站点在这个系统上运行,需要访问这个路径。
  • 如果我有两个网站,如 /var/www/website1 和 /var/www/website2,我的 htaccess 应该在 /var/www/.htaccess 中,以便所有网站都能使用它吗?
  • 是的,这是一个虚拟主机设置。
【解决方案2】:

最近我编写了一个库来从环境变量中获取值并解析为 PHP 数据类型。该库可用于将环境变量解析为 PHP 数据类型(如转换为整数、浮点数、空值、布尔值),解析 JSON 字符串等复杂的数据结构,以及更多社区的贡献。

该库在此处可用:https://github.com/jpcercal/environment

并从环境变量中获取值来做到这一点:

<?php
// ...
require "vendor/autoload.php";
// ...
var_dump(Cekurte\Environment\Environment::get("MY_VARIABLE"));

尽情享受吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 2022-07-29
    相关资源
    最近更新 更多