2013-07-05 34 views

Odpowiedz

17

getenv() zwraca false, jeśli zmienna środowiskowa nie jest ustawiona. Poniższy kod zadziała:

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

Należy stosować ścisłą operator porównania (!==), ponieważ getenv() normalnie zwraca ciąg znaków, które mogą zostać oddane jako wartość logiczną.

-4

To jest to, czego potrzebujesz

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

    } else { 

    } 
+6

'isset ($ var)' jest zawsze prawdziwe w tym przypadku. – wecsam

+0

Ponieważ getvar() zwraca false, gdy nie jest ustawione, isset zwróci true zawsze, ponieważ zmienna $ var jest ustawiona, ale ustawiona na false. – nickdnk

3

można sprawdzić jak to

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

getenv() Zwraca wartość zmiennej środowiskowej.

+1

Czy "REMOTE_ADDR" nie jest zawsze ustawione? W moim przypadku piszę skrypt, który musi działać inaczej, w zależności od tego, czy serwer ma zestaw zmiennych środowiskowych. – wecsam

+0

@wecsam REMOTE_ADDR był tylko przykładem, że możesz przekazać inną zmienną środowiskową –

+2

Sam wykombinowałem, że 'getenv()' zwraca 'false', jeśli zmienna środowiskowa nie jest ustawiona. Widzę, że ten właśnie kod próbuje zilustrować. Jednak z twoim kodem jest kilka problemów. Przede wszystkim staramy się unikać używania operatora '=' przypisania w warunkach 'if', ponieważ prawie zawsze mamy na myśli' == '. Po drugie, wartością zmiennej środowiskowej może być pusty łańcuch, który rzuca na "fałsz", więc musimy użyć operatora ścisłego porównania. – wecsam