如何检查PHP中是否设置了环境变量?

问题描述 投票:0回答:4

在PHP中,如何测试环境变量是否设置?我想要这样的行为:

// Assuming MYVAR isn't defined yet.
isset(MYVAR); // returns false
putenv("MYVAR=foobar");
isset(MYVAR); // returns true
php environment-variables isset
4个回答
41
投票
如果未设置环境变量,则

getenv()
返回
false
。以下代码将起作用:

// Assuming MYVAR isn't defined yet.
getenv("MYVAR") !== false; // returns false
putenv("MYVAR=foobar");
getenv("MYVAR") !== false; // returns true

请务必使用严格比较运算符 (

!==
),因为
getenv()
通常返回一个可以转换为布尔值的字符串。


4
投票

你可以这样检查

if($ip = getenv('REMOTE_ADDR'))
echo $ip; 

getenv() 返回环境变量的值。


0
投票

环境变量(至少在 PHP 中)始终是字符串。无法将它们设置为布尔值

false
- 这就是为什么
putenv()
只接受一个字符串作为参数。因此,每当
getenv()
返回
false
时,环境变量就不会被设置。知道了这一点,您可以通过严格比较环境变量来确定是否设置了环境变量
false

if ( getenv('MYVAR') !== false ) {
    echo 'Environment variable "MYVAR" is set to "' . getenv('MYVAR') . '"';
}

以下是一些测试(使用 Apache 指令

SetEnv
):

SetEnv TEST_FALSE false
SetEnv TEST_QUOTED_FALSE "false"
SetEnv TEST_0 0
SetEnv TEST_QUOTED_0 "0"
SetEnv TEST_EMPTY
SetEnv TEST_QUOTED_EMPTY ""

和 PHP

putenv()
:

putenv("PUTENV_FALSE=false");
putenv("PUTENV_0=0");
putenv("PUTENV_EMPTY=");

会导致什么结果:

UNSET_ENV:         bool(false)
TEST_FALSE:        string(5) "false"
TEST_QUOTED_FALSE: string(5) "false"
TEST_0:            string(1) "0"
TEST_QUOTED_0:     string(1) "0"
TEST_EMPTY:        string(0) ""
TEST_QUOTED_EMPTY: string(0) ""
PUTENV_FALSE:      string(5) "false"
PUTENV_0:          string(1) "0"
PUTENV_EMPTY:      string(0) ""

这里没有问,但与之相关:
如果您想检查环境变量是否设置为布尔值 true,您可以使用过滤器函数:

filter_var( getenv('MYVAR'), FILTER_VALIDATE_BOOLEAN) );

因为使用这个过滤器时,结果会是这样的:

UNSET_ENV:         bool(false)
TEST_FALSE:        bool(false)
TEST_QUOTED_FALSE: bool(false)
TEST_0:            bool(false)
TEST_QUOTED_0:     bool(false)
TEST_EMPTY:        bool(false)
TEST_QUOTED_EMPTY: bool(false)
PUTENV_FALSE:      bool(false)
PUTENV_0:          bool(false)
PUTENV_EMPTY:      bool(false)

“true”、“on”、“yes”和“1”(不区分大小写)等值将导致

bool(true)
。任何其他字符串都会返回
bool(false)


-7
投票

这就是你需要的

    $var = getenv(MYVAR)
    if(isset($var)) {

    } else {

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