개발 꿀팁/PHP

PHP 오류 표시 설정 및 보고 수준 설정

Jammie 2022. 7. 13. 12:35
반응형

경고: 생산환경에 어떠한 오류도 표시해서는 안 됩니다.

오류 보이기( display_errors)잘못 보고(error_reporting)는 별개다.PHP 스크립트에 오류가 발생하면 설정에 따라 이 오류를 보고할지(에러 로그에 기록할지) 선택할 수 있으며, 설정에서 display_errors를 켜면 오류 메시지가 화면에 동시에 출력됩니다.

항목에서 자주 사용하는 설정

switch (ENVIRONMENT)
{
    // 개발 환경의 경우, 모든 오류를 보고하고 동시에 화면에 표시
    case 'development':
        error_reporting(-1);
        ini_set('display_errors', 1);
    break;

    // 테스트와 생산환경에 대해서는 에러를 표시하지 않으며 5.3 이상의 버전에서는 통지, 폐기방법, 엄격한 이 몇 가지 에러를 보고하지 않는다
    case 'testing':
    case 'production':
        ini_set('display_errors', 0);
        if (version_compare(PHP_VERSION, '5.3', '>='))
        {
            error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);
        }
        else
        {
            error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE);
        }
    break;

    default:
        header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);
        echo 'The application environment is not set correctly.';
        exit(1); // EXIT_ERROR
}

PHP 미리 정의된 오류 상수
홈페이지는 모든 오류 상수를 정의하였다.일반적으로 사용되는 것은:

E_STRICT (int)eger) PHP에 의한 코드 수정 제안,코드의 상호운용성 및 전방위 호환성을 최적으로 보장한다.
E_ALL (intege)r) E_STRICT 이외의 모든 오류와 경고정보。
E_ERROR (inte)ger) 치명적인 런타임 오류.이러한 오류는 일반적으로 메모리 할당으로 인한 문제 등과 같이 복구할 수 없는 경우이다.결과적으로 스크립트가 종료되어 더 이상 실행되지 않게 됩니다.
E_WARNING (in)teger) 런타임 경고 (치명적이지 않은 오류). 프롬프트만 표시되지만 스크립트는 실행을 중지하지 않습니다.
E_PARSE (inte)ger) 구문 분석 오류입니다.해석 오류는 분석기에서만 발생합니다.
E_NOTICE (int)eger) 런타임 알림.스크립트가 발생할 수 있음을 나타냅니다.잘못된 경우로 나타나지만 정상적으로 동작할 수 있는 스크립트 안에도 비슷한 알림이 있을 수 있습니다.
코드에서 표시 단계 열기 및 설정
ini_set() 함수
PHP의 경우 p를 통해hp.ini 파일에는 다양한 명령어가 있습니다.스크립트가 실행될 때 명령을 설정해야 할 때가 있습니다. ini_set() 함수가 필요합니다.

string ini_set ( string $varname , string $newvalue )

설정 옵션 값을 설정합니다.이 옵션은 스크립트가 실행될 때 새 값을 유지하고 스크립트가 끝날 때 복원합니다.

예:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'on');

error_reporting() 함수
error_reporting() 함수 에너지실행 시 error_reporting 명령을 설정할 수 있습니다. PHP에는 여러 가지 오류 단계가 있는데, 이 함수를 사용하면 스크립트가 실행될 때 수준을 설정할 수 있습니다.선택적 인자가 설정되지 않으면 error_reporting( ) 은 현재 오류 보고 수준을 반환합니다.

PHP7.2의 기본값은 E_ALL입니다. ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

개발 단계에서 E_NOTICE 표시 사용 권장더 많은 오류.

<?php

// 모든 PHP 오류 보고서 닫기, 해당 ini_set('error_reporting', 0);
error_reporting(0);

error_reporting(E_ERROR | E_WARNING | E_PARSE);

// E_NOTICE 보고하기 (초기화되지 않은 변수나 캡처된 변수의 잘못된 철자를 보고하기)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// E_NOTICE를 제외한 모든 오류 보고
error_reporting(E_ALL ^ E_NOTICE);

// 报모든 PHP 오류 보고하기 (changelog 참조)
error_reporting(E_ALL);

// 모든 PHP 오류 보고
error_reporting(-1);

// 와error_reporting(E_ALL);마찬가지다
ini_set('error_reporting', E_ALL);

php.ini 프로필 수정

error_reporting = E_ALL # 모든 오류 보고
display_errors = On #오류 표시

 

반응형