如何使用内置的webserver从php读取Windows的环境变量?

问题描述 投票:1回答:1

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

$_SERVER['APPSETTING_Imgur_Client_Id'];

Set Azure Application Environment variables

Azure $_SERVER

我想在我的开发环境(Windows)中使用相同的机制,通过设置Environnement变量(直接到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从本地目录启动webserver。接缝是php -S命令不通过Windows环境。

谢谢。

编辑:解决方案:

使用getenv见下图:

Postman sample, with both user env and system env

php windows
1个回答
0
投票

使用getenv函数。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.