如何从 php 获取 wercker 环境变量?
How to get wercker environment vars from php?
我目前正在为用 PHP 编写的 API 编写单元测试。此 API 在每个请求之前实施一个 RateLimiting 步骤,我想在测试应用程序时避免此步骤。
现在,如果我想 运行 在本地进行测试,我只需要检查本地 IP,即“::1”。但是我在访问我的持续集成服务器提供的环境变量时遇到问题(我正在使用 wercker)。
如果我 运行 这个来自 PHP 单元测试:
var_export(isset($_SERVER["CI"]) || isset($_SERVER["wercker"]));
我得到 true
,但是如果我在应用速率限制之前做了类似的事情:
if (isset($_SERVER["CI"]) || $request->getIp() === "::1") {
return;
} else {//...
wercker 测试一直失败,因为它从不跳过速率限制逻辑。请注意,第一段代码是 运行 来自 PHP 单元的测试,而第二段代码是服务器应用程序的一部分。
我对环境变量做错了什么?
如果我必须提供更多信息或文档,请告诉我。
我能够通过使用 PHP 的 getenv
函数
使其工作
if (getenv("CI") || $request->getIp() === "::1") {
return;
} else {//...
要在 Wercker 服务器上显示所有环境变量,请添加此步骤(例如:在构建部分):
build:
steps:
- script:
name: show env vars
code: env
我目前正在为用 PHP 编写的 API 编写单元测试。此 API 在每个请求之前实施一个 RateLimiting 步骤,我想在测试应用程序时避免此步骤。
现在,如果我想 运行 在本地进行测试,我只需要检查本地 IP,即“::1”。但是我在访问我的持续集成服务器提供的环境变量时遇到问题(我正在使用 wercker)。
如果我 运行 这个来自 PHP 单元测试:
var_export(isset($_SERVER["CI"]) || isset($_SERVER["wercker"]));
我得到 true
,但是如果我在应用速率限制之前做了类似的事情:
if (isset($_SERVER["CI"]) || $request->getIp() === "::1") {
return;
} else {//...
wercker 测试一直失败,因为它从不跳过速率限制逻辑。请注意,第一段代码是 运行 来自 PHP 单元的测试,而第二段代码是服务器应用程序的一部分。
我对环境变量做错了什么?
如果我必须提供更多信息或文档,请告诉我。
我能够通过使用 PHP 的 getenv
函数
if (getenv("CI") || $request->getIp() === "::1") {
return;
} else {//...
要在 Wercker 服务器上显示所有环境变量,请添加此步骤(例如:在构建部分):
build:
steps:
- script:
name: show env vars
code: env