【问题标题】:How to read Windows's Environment variables from php using built-in webserver?如何使用内置网络服务器从 php 读取 Windows 的环境变量?
【发布时间】:2018-06-10 21:07:48
【问题描述】:

我使用 Azure 来部署我的代码,所以我使用服务器的变量来保存重要的设置(如 client_id 和 client_secrets)。

$_SERVER['APPSETTING_Imgur_Client_Id'];

Set Azure Application Environment variables

Azure $_SERVER

我想在我的开发环境 (Windows) 中使用相同的机制,方法是设置环境变量(直接到 Windows)并在我的应用程序中使用它们。

所以我定义了 2 个 Windows 变量 (system properties->Environment Variables->User Variables):

Set Windows's Evironment variables

但是这些变量不能通过$_SERVER['APPSETTING_Imgur_Client_Id'];(使用php -S [::]:80 index.php cmd)获得。 我只有默认的 $_SERVER 变量。

所以我问:

  • 如何用php读取那些Windows的环境变量?

  • 如果我们无法添加自定义 $_SERVER 变量(不使用 php 应用程序代码)。


我正在使用:

PHP 7.1.10
&
Windows Server 2016

我已经更改了变量的位置(现在在System variables 下)并重新启动了我的计算机。

但在那之后,即使使用getenv('APPSETTING_Imgur_Client_Id'')$_SERVER,我也无法访问我的自定义变量。

但是使用命令行php -r 'var_export($_SERVER);' 我可以看到我的变量

如果我想编辑我的代码,我会克隆 repo 并使用 php -S [::]:80 index.php 从本地目录启动网络服务器。 php -S 命令没有通过 windows 环境。

谢谢。

编辑:解决方案:

使用getenv见下图:

Postman sample, with both user env and system env

【问题讨论】:

  • @NineBerry 你的回答是正确的,getenv('somevar') 有效,而不是$_SERVER['somevar']。我应该回滚到上一个问题吗?还是我应该发布答案?非常感谢。

标签: php windows


【解决方案1】:

使用getenv 函数。

http://php.net/manual/en/function.getenv.php的文档

请注意,当网络服务器在不同的用户帐户下运行时,网络服务器无法看到在system properties->Environment Variables->User Variables 下设置的变量。您需要通过system properties->Environment Variables-> System Variables 设置变量(然后重新启动网络服务器使其可用)

【讨论】:

  • 我已经更改了变量的位置(现在在System variables 下)并重新启动了我的计算机。但在那之后,即使使用getenv('APPSETTING_Imgur_Client_Id'')$_SERVER,我也无法访问我的自定义变量。编辑:但是使用命令行php -r 'var_export($_SERVER);' 我可以看到我的变量
  • @user8738918 测试 php 代码的具体设置是什么?
  • 如果我想编辑我的代码,我会克隆 repo 并使用 php -S [::]:80 index.php 从本地目录启动网络服务器。所以我有一个 php7 和一个 windows server 2016 (10.0.14393)。 php -S 命令没有通过 windows 环境。
猜你喜欢
  • 1970-01-01
  • 2012-11-26
  • 2021-12-14
  • 1970-01-01
  • 2020-02-08
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
相关资源
最近更新 更多