PHP : Undefined index: 오류 발생 시 해결 방법 / 오류메시지 해결

솔루션 구매 및 의뢰 문의
010-7262-9288
mrkjm@nate.com
PHP 팁

PHP : Undefined index: 오류 발생 시 해결 방법 / 오류메시지 해결

머니버그 0 192

PHP 에러 중에 "Notice: Undefined index" 라는 오류메세지가 출력 될 때가 있습니다.

 

이것은 php.ini 와 관련된 사항입니다.

 

우선 어떤 경우에 발생하는지를 아래의 오류메세지를 예로 들어 얘기 하겠습니다.

 

예1.

Notice: Undefined index: data in E:\public_html\test\index.php on line 5
index.php 파일의 5번째 줄에 코딩은 아래와 같이 코딩을 했을 경우
$sum = $data + 1;
$data 를 미리 선언하지 않았기 때문에 $data를 알 수가 없어서 발생 합니다.

 

예2.

아래와 같이 REQUEST / SESSION 등을 사용 하는 경우에도 발생 할 수 있습니다.
$sess_id = $_REQUEST["id"];
$sess_id = $_SESSION["id"];
위의 경우에는 아래와 같은 오류메세지를 출력됩니다.
Notice: Undefined index: id in E:\public_html\test\index.php on line 2

 

예3.

board.php?page=1 로 페이지의 수를 GET으로 넘겨 줄 경우
해당 page의 값을 이용한 코드가 아래와 같다면
$page = ($_GET['page']) ? $_GET['page'] : 1;
위의 경우에는 아래와 같은 오류메세지를 출력됩니다.
Notice: Undefined index: page in E:\public_html\test\index.php on line 30

 

위와 같은 오류메세지가 발생하는 가장 큰 원인은 표준 코딩이 되지 않았기 때문에 발생합니다.

 

아주 엄격하게 코딩을 하려면 모든 변수를 선언한 후에 사용하면 되지만, 전달되어 들어오는 변수의 경우 미리 선언하기 어려운 경우도 있습니다.

 

 

해결방법1. (php.ini 수정 권한이 있는 경우)

이럴경우, php.ini 파일을 수정하면 쉽게 해결이 가능합니다.

 

php.ini 파일을 열고 error_reporting 부분을 찾아보면 아래와 같이 되어있는 경우가 많습니다.

 

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

 

E_ALL은 모든 에러에 대하여 출력한다는 뜻입니다.

 

E_DEPRECATED 는 특정기능/함수가 앞으로는 지원되지 않을 수 있는 경우 표시됩니다.

 

해당 문자열 앞에 ~가 붙으면 해당 오류는 출력하지 않는다는 뜻입니다.

 

그래서 아래와 같이 & ~E_NOTICE  를 추가해 주면 앞어살펴본 변수선언 관련 에러가 표시되지 않습니다.

 

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE

 

php.ini 를 수정한 후에는 웹서버를 재시작 해주시면 적용됩니다.

 

해결방법2. (php.ini 수정권한이 없는 경우-1)

공통으로 사용되는 include 되는 파일 최상단에 아래와 같이 추가 합니다.

 

PHP에서 지원하는 error_reporting() 함수 : 오류 보고 수준을 설정하는 PHP 함수를 이용합니다.

 

error_reporting(0);

 

모든 오류출력을 끄게 됩니다.

 

해결방법3.(php.ini 수정권한이 없는 경우-2)

모든 변수에 대해서 미리 선언해 주는 방법입니다.

 

예1의 경우 아래 참고

 

$data = 0; 이라는 식으로 미리 선언을 해주면 됩니다.

 

$sum = $data + 1;

 

예2, 예3 의 경우 아래 참고(isset() 설정된 변수인지 확인하는 함수 이용))

 

$sess_id = $_REQUEST["id"];

 

=> $sess_id = isset($_REQUEST["id"]) ? $_REQUEST["id"] : '';

 

$sess_id = $_SESSION["id"];

 

=> $sess_id = isset($_SESSION["id"]) ? $_SESSION["id"] : '';

 

$page = ($_GET['page']) ? $_GET['page'] : 1;

 

=> isset($_GET['page']) ? $_GET['page'] : 1;

 

, , , , ,

0 Comments
TIP
글이 없습니다.
010.7262.9288
월-금 : 10:00 ~ 22:00, 토/일/공휴일 휴무
브레이크타임 : 16:30 ~ 19:00

Bank Info

국민은행 078501-04-057514
예금주 강준모
State
  • 현재 접속자 2 명
  • 오늘 방문자 20 명
  • 어제 방문자 29 명
  • 최대 방문자 2,476 명
  • 전체 방문자 30,618 명
  • 전체 게시물 102 개
  • 전체 댓글수 0 개
  • 전체 회원수 3 명