2013-07-05 15 views

Antwort

17

getenv() kehrt false wenn die Umgebungsvariable nicht gesetzt ist. Der folgende Code funktioniert:

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

Seien Sie sicher, dass die strenge Vergleichsoperator (!==) verwenden, da getenv() normalerweise einen String zurückgibt, die als boolean gegossen werden konnte.

-4

Dies ist, was Sie

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

    } else { 

    } 
+6

'isset ($ var)' ist in diesem Fall immer wahr. – wecsam

+0

Da getvar() false zurückgibt, wenn es nicht gesetzt ist, gibt isset immer true zurück, da $ var gesetzt ist, aber auf false gesetzt ist. – nickdnk

3

benötigen, können Sie prüfen, wie diese

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

getenv() Gibt den Wert der Umgebungsvariablen.

+1

Ist 'REMOTE_ADDR' nicht immer gesetzt? In meinem Fall schreibe ich ein Skript, das sich abhängig davon, ob der Server eine Umgebungsvariable gesetzt hat, anders verhalten muss. – wecsam

+0

@wecsam REMOTE_ADDR war nur ein Beispiel Sie verschiedene Umgebungsvariable passieren kann –

+2

ich selbst herausgefunden, dass 'getenv()' 'kehrt false' wenn die Umgebungsvariable nicht gesetzt ist. Ich sehe, dass das Ihr Code versucht zu illustrieren. Es gibt jedoch einige Probleme mit Ihrem Code. Zuallererst versuchen wir zu vermeiden, den '=' Zuweisungsoperator in 'if' Bedingungen zu verwenden, weil wir fast immer' == 'meinten. Zweitens könnte der Wert der Umgebungsvariablen eine leere Zeichenfolge sein, die auf "false" umsetzt. Daher müssen wir einen strikten Vergleichsoperator verwenden. – wecsam

Verwandte Themen