【发布时间】:2018-06-10 21:07:48
【问题描述】:
我使用 Azure 来部署我的代码,所以我使用服务器的变量来保存重要的设置(如 client_id 和 client_secrets)。
$_SERVER['APPSETTING_Imgur_Client_Id'];
Set Azure Application Environment variables
我想在我的开发环境 (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见下图:
【问题讨论】:
-
@NineBerry 你的回答是正确的,
getenv('somevar')有效,而不是$_SERVER['somevar']。我应该回滚到上一个问题吗?还是我应该发布答案?非常感谢。