我使用Azure来部署我的代码,所以我使用服务器的变量来保存重要的设置(比如client_id和client_secrets)。
$_SERVER['APPSETTING_Imgur_Client_Id'];
Set Azure Application Environment variables
我想在我的开发环境(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 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
见下图:
使用getenv
函数。
http://php.net/manual/en/function.getenv.php的文档
请注意,当Web服务器在不同的用户帐户下运行时,Web服务器无法显示在system properties->Environment Variables->User Variables
下设置的变量。您需要通过system properties->Environment Variables-> System Variables
设置变量(然后重新启动Web服务器以使其可用)