본문 바로가기

『IT/개발』/PHP

PHP Notice: Undefined index: 발생 시 처리 방법

[error] PHP Notice: Undefined index:



아파치 에러 로그를 확인해보면 "[error] [client 1.2.3.4] PHP Notice: Undefined index:" 라는 로그가 찍혀있을 때가 있습니다.

에러 로그의 경우 프로그램이 정상적으로 동작을 하지 않을 경우에 확인을 하게 되는데요.

혹시나 들어가봤더니 이 에러 로그는 뭐지...라고 생각할 수 있습니다.(전 그랬어요^^)

더군다나 프로그램의 기능에는 아무런 문제가 없는데 말이죠.


먼저 말씀을 드리자면 PHP 코드에는 아무런 문제가 없습니다.

보통 PHP 코드 작성시 변수를 선언과 동시에 사용을 하시죠. 

아니 선언은 필요없고 그냥 바로 사용을 하죠.

그래서 나는 에러라고 보시면 될 것 같습니다.

다시 말하자면 초기화 되지 않은 변수를 사용해서 생기는 에러 로그입니다.


프로그램 동작에 문제가 없는데 굳이 이 에러 로그를 계속해서 찍을 필요는 없겠죠.

해결 방법은 어렵지 않아요.

그냥 php.ini 파일에서 한 줄만 수정하시면 됩니다.


참고로 php.ini 파일 위치는 보통 /etc/ 아래에 있습니다.

php.ini 파일을 열어~ 주세요.

Line 513 에 보시면 "error_reporting = "라는 것이 보이시죠?ㅎㅎ

vim 에서 문자 찾기를 이용해서 하시면 편하겠죠~

ex) /error_reporting = 


버전에 따라서 다르겠지만 저 같은 경우 초기값이 아래와 같았습니다.

error_reporting = E_ALL & ~E_DEPRECATED

참고로 얘기하자면 위 값의 뜻은 모든 에러 발생 시에 로그를 생성하겠다라는 말입니다.

E_DEPRECATED 만 제외하고...

E_DEPRECATED 는 향후 PHP 버전에서 동작을 하지 않을 수도 있는 코드에 대해서 로그를 발생 시킨다는 것입니다.

여튼 결론은 위 error_reporting 을 아래와 같이 수정을 해주시면 됩니다.

error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE

마지막에 & ~E_NOTICE 를 추가 해주시면 됩니다.

E_NOTICE 이 놈이 초기화 되지 않은 변수를 사용했을 때 에러 로그를 생성하는 놈입니다.

그래서 얘를 제외시키는 거죠.


추가 하셨으면 저장하고 나와서 아파치를 재시작 하시면 됩니다.

service httpd restart


이상 입니다.