INIDOG
php-undefined-index

PHP Notice: Undefined index: HTTP_REFERER 해결하기

php-undefined-index

PHP Notice: Undefined index: HTTP_REFERER 문제


PHP 코드를 개발하다보면 PHP 코드상의 에러 메세지나 웹 서버의 에러 로그를 확인하면서 다음과 같은 내용이 기록되어 있는 경우가 있습니다.

2018/10/27 23:02:37 [error] 503#0: *2708 FastCGI sent in stderr: "PHP message: PHP Notice:  Undefined index: HTTP_REFERER in /home/nginx/public_html/index.html on line 58" while reading response header from upstream, client: 192.168.xxx.xxx, server: mydomain.com, request: "GET /index.html HTTP/2.0", upstream: "fastcgi://unix:/var/run/php-fpm.sock:", host: "mydomain.com"

 

정의되지 않은 인덱스라고 해석할 수 있는 이 에러는 해당 페이지에서 확인해보려 해도 특별한 문제가 없는 경우가 많습니다.

어떤 이유로 위 에러 메세지가 표시되는 것일까요?

 

 

해결 방법


이는 현재 로드된 웹페이지에서 PHP의 특정 환경변수의 값이 존재하지 않아 발생하는 문제입니다.

다음 에러 내용에서 확인할 수 있듯이 HTTP_REFERER 변수에서 문제가 발생한 것으로 의심됩니다.

Undefined index: HTTP_REFERER

 

이제 해당 코드를 수정해보도록 하겠습니다.

PHP 코드 내에서 $_SERVER['HTTP_REFERER'] 를 사용한 부분을 찾습니다. 아래 예시에서는 echo를 사용하여 환경변수를 사용했습니다.

echo "HTTP REFERER : " . $_SERVER['HTTP_REFERER'];

 

이제 이 부분에 변수 값이 존재하는지 확인하는 코드를 추가해줍니다. isset() 함수를 사용하면 해당 변수의 값이 존재하는지 확인하여 만약 존재하지 않을 경우 false를 반환하게 됩니다.

if (isset($_SERVER['HTTP_REFERER'])) {
...
    echo "HTTP REFERER : " . $_SERVER['HTTP_REFERER'];
...
}

이렇게 코드를 수정하면 더 이상 에러 로그에 메세지가 나타나지 않을 것입니다.

 

에러 메세지를 끄기


사실 이러한 에러는 중요성이 낮은 알림 메세지에 가깝습니다.

만약 PHP의 에러 메세지를 완전히 끄고 싶다면 다음 포스트를 참고해보세요.

PHP 에러 메세지 출력 또는 숨기기 설정 방법

이 글에 대해 어떻게 생각하시나요?
유용한 포스트였나요? 여러분의 의견을 하단의 Vote와 댓글로 남겨주세요 🙂
유용합니다!
아쉽습니다.

여러분의 의견을 댓글로 남겨주세요.

avatar
error: