php, 아파치 로그 [error] [client xxx.xxx.xxx.xxx] PHP Notice: Use of undefined index 에러가 쌓일 때
PHP 2015. 4. 29. 20:48php, 아파치 로그 [error] [client xxx.xxx.xxx.xxx] PHP Notice: Use of undefined index 에러가 쌓일 때.
tail -f error_log 해보면
[Wed Apr 29 20:30:12 2015] [error] [client 123.123.123.123] PHP Notice: Undefined index page in /~~~~ 과 같은 로그가 계속 쌓이는 것을 볼 수 있다.
그런데 해당 페이지는 전혀 문제가 없다. 로그만 쌓일 뿐이다.
괜히 로그 파일만 쌓이니 해결해 주자.
원인 : 보통 php변수를 선언할 때엔 변수 선언과 동시에 값을 대입하는데 GET, POST 변수인 경우엔 변수 선언시 아직 값이 할당되지 않은 경우가 있다.
즉,
1. $page = $_GET['page'];
2. if(!$page){
3. $page = 1;
4. }
위와 같이 선언한 경우에는 2페이지로 넘어가기 전 1페이지만 호출시 $_GET['page'] 값이 없게 된다.
그래서 1번줄에 에러가 나는 것이다.
물론 프로그램 동작시에는 문제가 없지만 php설정에 따라 로그를 남기게 된다.
null 값으로 변수를 선언했다는 이유임.
해결방법1) : 변수선언시 isset 으로 확인 (권장방법)
php.net 에서 권고하는 방법은, 변수선언을 다음과 같이 해준다.
1번 행을, 아래와 같이 선언해준다.
1. $page = (isset($_GET['page']) ? $_GET['page'] : null);
해결방법2) : php.ini 수정 (권장하진 않지만 동일한 효과)
서버를 손볼 수 있다면 php.ini 파일을 열어 수정해 준다.
php.ini 파일을 열고 아래와 같은 부분을 찾는다.
;error_reporting = E_ALL & ~E_NOTICE
;
; - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE | E_STRICT
;
; - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
;
; - Show all errors, except coding standards warnings
;
error_reporting = E_ALL
이 부분을 아래와 같이 주석을 바꿔준다.
error_reporting = E_ALL & ~E_NOTICE
;
; - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE | E_STRICT
;
; - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
;
; - Show all errors, except coding standards warnings
;
;error_reporting = E_ALL
저장하고 아파치를 재시작하면 된다.
끝.
'PHP' 카테고리의 다른 글
php 5.4 split to explode (0) | 2016.01.27 |
---|---|
PHP 5.3이상에서 변경되는 함수들 (0) | 2015.07.24 |
php, 아파치 에러로그 Use of undefined constant ~~~ (0) | 2015.04.29 |
PHP : email주소 유효성 체크 (0) | 2015.04.18 |
PHP 확장자 구하기 (0) | 2015.04.18 |