2013-07-05 114 views

回答

17

getenv()如果未设置环境变量,则返回false。下面的代码将工作:

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

一定要使用严格的比较操作符(!==),因为通常getenv()返回可能被强制转换为布尔值的字符串。

-4

这就是你需要

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

    } else { 

    } 
+6

'isset($ var)'在这种情况下总是成立。 – wecsam

+0

因为getvar()在未设置时返回false,所以isset将始终返回true,因为$ var已设置,但设置为false。 – nickdnk

3

您可以检查这样

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

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

+1

是不是总是设置“REMOTE_ADDR”?就我而言,我正在编写一个脚本,需要根据服务器是否设置了环境变量来采取不同的行为。 – wecsam

+0

@wecsam REMOTE_ADDR只是一个例子,你可以通过不同的环境变量 –

+2

我自己想通过'getenv()'返回'false'如果环境变量没有设置。我看到这就是你的代码试图说明的。但是,您的代码有几个问题。首先,我们试图避免在if条件中使用'='赋值运算符,因为我们几乎总是指'=='。其次,环境变量的值可能是一个空字符串,它会转化为'false',所以我们需要使用一个严格的比较运算符。 – wecsam