안녕하세요. 명월입니다.
이 글은 PHP에서 Fatal 및 Notice, Warnig 에러 메시지 처리하는 방법에 대한 글입니다.
PHP개발을 하다보면 아래와 같은 에러 메시지가 나올때가 있습니다.
<?php
$data = 1/0;
?>
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<?=$data1?>
</body>
</html>
위와 같은 에러는 제가 0으로 나온 에러메시지와 선언하지 않은 $data1변수를 출력하려다 보니 나오는 에러 메시지 입니다. (아래의 이미지는 xDebug설치시 나오는 에러입니다.)
링크 - PHP에서 xDebug 설치 방법
이게 에러 메시지이니 화면에 나오는 게 당연합니다만, 만약 product의 경우면 에러의 세부정보가 나오는 것은 안됩니다. 제가 강제로 에러를 만들었지만 에러가 아닌 Notice 메시지가 나오는 것도 곤란합니다.
이 메시지를 화면상에 나오지 않게 하는 방법입니다.
php.ini에서 설정하는 방법
먼저 php.ini를 가면 error_reporting의 영역이 있고 E_ALL로 선택이 되어있습니다. 이 뜻은 모든 메시지를 표시하는 설정입니다.
그에 대한 설정에 대한 글이 친절하게 영어로 적혀있네요.
; E_ALL - 모든 메시지와 경고
; E_ERROR - 치명적인 에러
; E_RECOVERABLE_ERROR - 거의 모든 에러
; E_WARNING - 경고
; E_PARSE - 컴파일 단위의 에러..이건 아마 함수 상에서 발생하는 에러일 듯싶네요.
; E_NOTICE - notice 레벨 메시지
; E_STRICT - notice 레벨 메시지(위 메시지와 정확한 차이를 모르겠네요. 버전 차이에 오는 메시지라는데.. 구 버전에서 사용하지만 현 버전에서는 다르게 사용하는 알람인가?)
; E_CORE_ERROR - PHP 기동 에러
; E_CORE_WARNING - PHP 기동 경고
; E_COMPILE_ERROR - 컴파일 단위의 에러
; E_COMPILE_WARNING - 컴파일 단위의 에러
; E_USER_ERROR - 유저 생성 에러 메시지
; E_USER_WARNING - 유저 생성 경고 메시지
; E_USER_NOTICE - 유저 생성 알람 메시지
; E_DEPRECATED - 현 버전에서는 사용되지 않는 함수
; E_USER_DEPRECATED - 유저 생성 사용하지 않는 메시지
여기서 모든 메시지를 표시하지 않게 하려면 0를 넣으면 됩니다.
이 표시는 production에서 사용하고 개발 환경에서 이렇게 하면 에러를 확인할 수 없기 때문에 Notice만 제거합니다.
「E_ALL & ~E_NOTICE」이렇게 하면 모든 표시하고 E_NOTICE만 표시하지 않는다는 표현이 됩니다.
php 페이지에서 설정하는 방법
페이지 상단에 error_reporting 함수를 이용해서 설정할 수 있습니다.
<?php
error_reporting(E_ALL&~E_WARNING);
$data = 1/0;
?>
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<?=$data1?>
</body>
</html>
여기까지 PHP에서 Fatal 및 Notice, Warnig 에러 메시지 처리하는 방법에 대한 설명이었습니다.
궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.
'Study > PHP' 카테고리의 다른 글
[PHP] 분산 설정 파일(.htaccess) 사용법 (0) | 2019.09.24 |
---|---|
[PHP] 데이터 베이스(mariaDB)를 연결해서 사용하는 방법 (0) | 2019.09.20 |
[PHP] IO 사용법 (0) | 2019.09.19 |
[PHP] require과 include 그리고 「@」사용법 (0) | 2019.09.18 |
[PHP] $_SERVER, $GLOBALS, $_GET, $_POST, $_REQUEST, $_COOKIE, $_SESSION, $_FILES, $_ENV(getenv()) (0) | 2019.09.13 |
[PHP] 변수 확인 함수 var_dump, debug_zval_dump, print_r (0) | 2019.09.13 |
[PHP] 예외처리(try ~ catch ~ finally) (0) | 2019.09.11 |
[PHP] 배열과 List (0) | 2019.09.10 |