>백엔드 개발 >PHP 문제 >PHP의 오류 수준은 무엇입니까?

PHP의 오류 수준은 무엇입니까?

青灯夜游
青灯夜游원래의
2023-01-28 18:33:004692검색

php 오류 보고 수준은 다음과 같습니다. 1. E_ERROR 치명적인 런타임 오류, 일반적으로 복구 불가능 2. E_WARNING 런타임 경고(치명적이지 않은 오류) 3. E_PARSE 컴파일 타임 구문 분석 오류 4. E_CORE_ERROR 초기화 프로세스 발생 5. 초기화 시작 프로세스 중에 발생하는 E_CORE_WARNING 경고(치명적이지 않은 오류) 6. E_COMPILE_ERROR;

PHP의 오류 수준은 무엇입니까?

이 튜토리얼의 운영 환경: windows7 시스템, PHP8 버전, DELL G3 컴퓨터

프로그램 개발 과정에서 프로그램 실행 오류가 자주 발생하며, PHP는 프로그램의 오류 수준에 따라 지침을 제공합니다. . 다른 프롬프트를 표시합니다. 예를 들어 경고, 오류 등이 있지만 이러한 오류가 작은 오류인 경우 이러한 오류가 보고되지 않도록 할 수 있습니다.

PHP의 오류 수준은 다음과 같습니다.

치명적인 작업 시간 오류. 이러한 유형의 오류는 일반적으로 메모리 할당으로 인해 발생하는 문제와 같이 복구할 수 없는 상황입니다. 결과적으로 스크립트가 종료되고 더 이상 실행되지 않습니다. 🎜🎜2🎜 🎜🎜🎜E_WARNING🎜🎜 (정수)🎜🎜🎜런타임 경고(치명적이지 않은 오류). 프롬프트 메시지만 제공되고 스크립트는 종료되지 않습니다. 🎜🎜🎜🎜🎜🎜4🎜 🎜🎜🎜E_PARSE🎜🎜 (integer)🎜🎜🎜컴파일 시간 구문 분석 오류. 구문 분석 오류는 구문 분석기에 의해서만 생성됩니다. 🎜🎜🎜🎜🎜🎜8🎜 🎜🎜🎜E_NOTICE🎜🎜 (정수)🎜🎜🎜런타임 알림. 스크립트가 오류로 나타날 수 있는 상황에 직면했지만 정상적으로 실행될 수 있는 스크립트에 유사한 알림이 있을 수도 있음을 나타냅니다. 🎜🎜🎜🎜32🎜🎜🎜E_CORE_WARNING🎜(integer🎜)🎜🎜64🎜🎜🎜E_COMPILE_ERROR🎜(integer🎜)🎜🎜128🎜🎜🎜E_COMPILE_WARNING🎜(integer🎜)🎜🎜256🎜🎜🎜E_USER_ERROR🎜(integer🎜)🎜E_WARNING🎜1024🎜 🎜🎜E_USER_NOTICE🎜(integer🎜)🎜🎜사용자 생성 알림 정보. 🎜E_NOTICE🎜와 유사하지만 사용자는 코드 trigger_error()🎜를 생성합니다. 🎜🎜PHP 4부터🎜🎜🎜🎜2048🎜🎜 🎜E_STRICT 🎜🎜 (정수)🎜🎜🎜코드 수정에 대한 PHP 제안을 활성화하여 코드의 최고의 상호 운용성과 향후 호환성을 보장합니다. 🎜🎜PHP 5부터🎜🎜🎜4096🎜 🎜🎜E_RECOVERABLE_ERROR🎜(integer🎜)🎜🎜 캡처 가능 치명적 오류. 잠재적으로 위험한 오류가 발생했지만 PHP 엔진이 불안정해지지는 않았음을 나타냅니다. 사용자 정의 처리기에 의해 오류가 포착되지 않으면 🎜E_ERROR🎜이 되고 스크립트가 종료됩니다. 🎜🎜PHP 5.2.0부터🎜🎜🎜 🎜8192🎜🎜🎜E_DEPRECATED🎜🎜(정수)🎜🎜🎜런타임 알림. 활성화되면 향후 버전에서 제대로 작동하지 않을 수 있는 코드에 대한 경고가 표시됩니다.와 유사하지만 사용자는 코드 trigger_error()를 생성합니다.
1 E_ERRORE_ERROR (integer) 致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。
2 E_WARNING (integer) 运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。
4 E_PARSE (integer) 编译时语法解析错误。解析错误仅仅由分析器产生。
8 E_NOTICE (정수)
16 E_CORE_ERRORE_CORE_ERROR(integer) 在PHP初始化启动过程中发生的致命错误。该错误类似E_ERROR,但是是由PHP引擎核心产生的。 since PHP 4
32 E_CORE_WARNING(integer) PHP初始化启动过程中发生的警告 (非致命错误) 。类似 E_WARNING,但是是由PHP引擎核心产生的。 since PHP 4
64 E_COMPILE_ERROR(integer) 致命编译时错误。类似E_ERROR, 但是是由Zend脚本引擎产生的。 since PHP 4
128 E_COMPILE_WARNING(integer) 编译时警告 (非致命错误)。类似 E_WARNING,但是是由Zend脚本引擎产生的。 since PHP 4
256 E_USER_ERROR(integer) 用户产生的错误信息。类似 E_ERROR(integer) PHP 초기화 시작 중에 발생한 치명적인 오류입니다. 이 오류는 E_ERROR🎜와 유사하지만 PHP 엔진 코어에 의해 생성됩니다. 🎜 PHP 4부터🎜🎜
PHP 초기화 시작 중에 발생하는 경고(치명적이지 않은 오류)입니다. 🎜E_WARNING🎜과 유사하지만 PHP 엔진 코어에 의해 생성됩니다. 🎜 PHP 4부터🎜🎜
치명적인 컴파일 시간 오류입니다. 🎜E_ERROR🎜와 유사하지만 Zend 스크립트 엔진에 의해 생성됩니다. 🎜 PHP 4부터🎜🎜
컴파일 시간 경고(치명적이지 않은 오류). 🎜E_WARNING🎜과 유사하지만 Zend 스크립트 엔진에 의해 생성됩니다. 🎜 PHP 4부터🎜🎜
사용자가 생성한 오류 메시지입니다. 🎜E_ERROR🎜와 유사하지만 사용자가 코드에서 PHP 함수 🎜trigger_error()🎜를 사용합니다. 생성되었습니다. PHP 4부터
512 E_USER_WARNINGE_USER_WARNING(integer) 用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 since PHP 4
1024 E_USER_NOTICE(integer) 用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 since PHP 4
2048 E_STRICT (integer) 启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。 since PHP 5
4096 E_RECOVERABLE_ERROR(integer) 可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误,但是还没有导致PHP引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获,将成为一个 E_ERROR 从而脚本会终止运行。 since PHP 5.2.0
8192 E_DEPRECATED(정수)사용자가 생성한 경고 메시지입니다. 과 유사하지만 사용자는 코드 trigger_error()🎜를 생성합니다. 🎜🎜PHP 4 이후🎜🎜
PHP 5.3.0부터
16384 E_USER_DEPRECATEDE_USER_DEPRECATED(integer) 用户产少的警告信息。 类似 E_DEPRECATED, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 since PHP 5.3.0
30719 E_ALL (integer) E_STRICT(integer) 사용자에게 더 적은 양을 생성하라는 경고 메시지입니다. E_DEPRECATED
PHP 5.3.0부터🎜🎜🎜30719🎜🎜🎜E_ALL🎜 (정수)🎜🎜🎜E_STRICT🎜외출 시 모든 오류 및 경고 메시지. 🎜🎜PHP 5.3.x에서는 30719, PHP 5.2.x에서는 6143, 이전에는 2047🎜🎜🎜🎜

PHP에서 오류 보고 수준을 설정하는 방법:

1. PHP 구성 파일 php.ini

를 수정합니다. 이렇게 error_reporting을 설정한 후 웹 서버를 다시 시작하면 영구적으로 적용됩니다.
구성 파일 php.ini를 열고 오류 보고 수준 error_reporting의 기본값을 다음과 같이 확인하세요.

error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT1.

E_DEPRECATED 및 E_STRICT를 제외한 모든 오류를 보고한다는 뜻입니다.
다음으로 변경하세요.

error_reporting=E_ALL &  ~E_NOTICE1.

E_NOTICE를 제외한 모든 오류를 보고한다는 의미입니다. 이는 가장 일반적으로 사용되는 오류 보고 수준이기도 하며, 주의 클래스의 오류(예: 정의되지 않은 변수 사용)를 보고하지 않습니다.
저장하면 웹 서버를 다시 시작한 후에 적용됩니다.

2. error_reporting() 함수를 사용하세요.

이렇게 설정하면 바로 적용됩니다. 그러나 현재 스크립트의 error_reporting() 함수 호출 뒤의 영역에서만 가능합니다.

int error_reporting ([ int $level ] )1.

매개변수는 정수 또는 해당 상수 식별자일 수 있습니다. 상수 형식을 사용하는 것이 좋습니다. 반환 값은 현재 위치에서 유효한 오류 보고 수준의 값(정수 값)입니다.

참고: php.ini 구성 파일에 있는 display_errors의 기본값은 On입니다. 이는 오류 프롬프트가 표시된다는 의미입니다. Off로 설정하면 모든 오류 프롬프트가 꺼집니다.

error_reporting(0)을 사용하거나 함수 앞에 @를 추가하여 오류 출력을 억제하면 오류 메시지에서 민감한 정보가 유출되는 것을 방지할 수 있습니다.

매개변수 수준

새로운 오류 보고 수준. 비트마스크 또는 명명된 상수일 수 있습니다.

향후 버전과의 호환성을 보장하려면 명명된 상수를 사용하는 것이 좋습니다. 오류 수준이 추가되고 정수 값 범위가 증가함에 따라

이전 정수 기반 오류 수준이 항상 예상대로 작동하지는 않습니다.

레벨 가능한 값​​(PHP의 오류 보고 수준)

common: 총 약 15개

PHP의 오류 수준은 무엇입니까?

15개는 바이너리의 15비트에 정확히 해당합니다.

위 표의 필드는 정적이 아닙니다. PHP 버전에 따라 값이 다를 수 있습니다.

위 옵션 중 원하는 만큼 "OR"(OR 또는 | 사용)로 연결할 수 있습니다. 모든 수준에서 필요한 모든 오류를 보고할 수 있습니다.

예를 들어 다음 코드는 사용자 정의 오류 및 경고를 끄고 특정 작업을 수행한 다음 원래 오류 수준으로 돌아갑니다.

예:

<?php
     error_reporting(0);                //禁用错误报告
     error_reporting(E_ERROR | E_WARNING | E_PARSE);//报告运行时错误
     error_reporting(E_ALL);            //报告所有错误
     error_reporting(E_ALL ^ E_NOTICE); //除E_NOTICE报告所有错误,是在php.ini的默认设置
     error_reporting(-1);               //报告所有 PHP 错误
     error_reporting(3);                //不报E_NOTICE
     error_reporting(11);               //报告所有错误
     ini_set(&#39;error_reporting&#39;, E_ALL); // 和 error_reporting(E_ALL); 一样
     error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);//表示php错误,警告,语法错误,提醒都返错。
?>

변환 관계:

  • E_All: 십진수는 30719입니다. 이진수로 변환하면 111011111111111

  • E_NOTICE: 십진수는 8, 이진수로 변환하면 1000

  • ~E_NOTICE: E_NOTICE를 무효화하고 0111

  • E_ALL & ~E_N OTICE::E가 됩니다. _ALL 및 ~E_NOTICE는 ANDed이고 111011111110111이 됩니다. 10진수로 환산하면 30711

    E_ALL이 모든 오류를 표시하지 않는 것을 볼 수 있습니다. 12번째 비트는 0입니다. 이 비트의 가중치는 2의 11승, 즉 2048입니다. E_STRICT 값이므로 E_ALL은 E_STRICT를 제외한 모든 오류 수준을 표시합니다.

  • E_ALL & ~E_NOTICE는 오른쪽에서 왼쪽으로 이진수로 볼 수 있으며, 4번째와 12번째 비트는 0이고, 4번째 비트의 가중치는 2의 3승인 8이며, 이는 E_NOTICE이므로 E_STRICT 및 E_NOTICE를 제외한 모든 오류가 표시됩니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP의 오류 수준은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.