PHP에서 오류 수준을 수정하는 방법

青灯夜游
풀어 주다: 2023-03-10 09:58:02
원래의
2407명이 탐색했습니다.

PHP에서는 error_reporting() 함수를 사용하여 보고할 오류를 지정할 수 있습니다. 구문 형식은 "error_reporting(level)"입니다. 매개변수 수준은 현재 오류 보고 수준을 지정합니다. 스크립트. 값 번호와 상수 이름이 모두 허용됩니다.

PHP에서 오류 수준을 수정하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

php.ini에서 오류에 대한 서버의 경보 수준을 설정할 수 있습니다. 기본적으로 PHP는 알림을 제외한 모든 오류를 보고합니다.

오류 보고 수준은 미리 정의된 일부 상수를 통해 설정됩니다.

Syntax

int error_reporting ( [int level] )
로그인 후 복사

매개변수 수준이 지정되지 않으면 현재 오류 보고 수준이 반환됩니다. 다음 항목은 가능한 레벨 값입니다.

아래 표에 표시된 대로:

1        E_ERROR        报告运行时的致命错误
2        E_WARNING        报告运行的非致命错误

4        E_PARSE        报告解析错误
8        E_NOTICE        报告通告,注意,表示所做的事情可能是错误的.
16           E_CORE_ERROR        报告PHP引擎启动失败
32           E_CORE_WARNING    报告PHP引擎启动时非致命错误

64           E_COMPILE_ERROR    报告编译错误
128         E_COMPILE_WARNING    报告编译时出现的非致命错误

256         E_USER_ERROR        报告用户触发的错误
512         E_USER_WARNING    报告用户触发的警告

1024          E_USER_NOTICE        报告用户触发的通告
2047       E_ALL            报告所有的错误和警告
2048       E_STRICT        报告不赞成的用法和不推荐的行为
로그인 후 복사

php.ini 파일에서 기본 보고서는 다음 명령문으로 설정된 알림을 제외한 모든 오류입니다.

error_reporting = E_ALL & ~ (E_NOTICE)
로그인 후 복사

위의 표현식에서 "&" 기호는 여러 조건의 병치를 나타내고 "~"는 부정을 나타내며 NOT을 의미합니다.

경고 메시지를 무시하려면 다음 명령문을 설정하면 됩니다.

   error_reporting = E_ALL & ~(E_NOTICE) & ~(E_WARNING)
로그인 후 복사

ini 파일에서 오류 관련 설정은 다음과 같습니다:

(1) error_reporting, 오류 수준 설정

(2) display_errors, 오류 보고서 표시 여부, 열기로 설정, 설정 모든 오류를 닫으려면 OFF로 설정하세요. 팁

(3)log_errors, 기본 설정은 OFF입니다.

(4)track_errors, 기본 설정은 OFF입니다. 이 옵션은 오히려 코드의 오류를 해결하는 데 도움이 될 수 있습니다. PHP가 기본 기능을 제공하도록 하는 것보다 말이죠.

인터넷에서 수집:

E_NOTICE 表示一般情形不记录,只有程式有错误情形时才用到,例如企图存取一个不存在的变数,或是呼叫 stat() 函式检视不存在的档案。

E_WARNING 通常都会显示出来,但不会中断程式的执行。这对除错很有效。例如:用有问题的常规表示法呼叫 ereg()。
E_ERROR 通常会显示出来,亦会中断程式执行。意即用这个遮罩无法追查到记忆体配置或其它的错误。
E_PARSE 从语法中剖析错误。
E_CORE_ERROR 类似 E_ERROR,但不包括 PHP 核心造成的错误。
E_CORE_WARNING 类似 E_WARNING,但不包括 PHP 核心错误警告。
로그인 후 복사

PHP 오류 보고서

php.ini 파일에는 많은 구성 설정이 있습니다. Linux에 PHP를 설치하는 것과 마찬가지로 php.ini 파일이 이미 설정되어 적절한 디렉터리에 배치되어 있어야 합니다. Apache 2 문서에 표시된 대로. PHP 애플리케이션을 디버깅할 때 알아야 할 두 가지 구성 변수가 있습니다. 두 변수와 해당 기본값은 다음과 같습니다.

display_errors = Off
error_reporting = E_ALL
로그인 후 복사

이 두 변수의 현재 기본값은 php.ini 파일에서 검색하여 확인할 수 있습니다. display_errors 변수의 목적은 분명합니다. 이는 PHP에게 오류를 표시할지 여부를 알려줍니다. 기본값은 끄기입니다. 그러나 개발 프로세스를 더 쉽게 하려면 이 값을 On으로 설정하세요.

display_errors = On
로그인 후 복사

error_reporting 변수의 기본값은 E_ALL입니다. 이 설정은 잘못된 코딩 관행부터 무해한 팁, 오류까지 모든 것을 보여줍니다. E_ALL 브라우저의 출력을 엉망으로 만드는 작은 일(예: 변수가 초기화되지 않음)에 대한 힌트도 화면에 표시하므로 개발하기에는 너무 세분화되어 있습니다. 나는 단지 오류와 잘못된 코딩 관행을 보고 싶지만 그렇지 않습니다. 무해한 힌트. 따라서 error_reporting의 기본값을 다음 값으로 바꾸십시오.

error_reporting = E_ALL & ~E_NOTICE
로그인 후 복사

Apache를 다시 시작하면 모든 설정이 완료됩니다. 다음으로 Apache에서 동일한 작업을 수행하는 방법을 알아봅니다.

서버 오류 보고

는 Apache가 수행하는 작업에 따라 달라지며, 컴퓨터에 여러 PHP 버전이 있을 수 있으므로 PHP에서 오류 보고를 켜는 것이 작동하지 않을 수 있습니다. Apache는 하나의 php.ini 파일만 볼 수 있기 때문에

Apache가 어떤 PHP 버전을 사용하고 있는지 알기 어려울 때가 있습니다. 어떤 Apache가 사용 중인지 확실하지 않음 php.ini 파일 구성 자체가 보안 문제입니다. 그러나 올바른 오류 수준이 설정되도록 Apache에서 PHP 변수를 구성하는 방법이 있습니다.

또한 서버 측에서 이러한 구성 변수를 설정하여 php.ini 파일을 재정의하거나 선점하여 더 높은 수준의 보안을 제공하는 방법을 아는 것이 좋습니다.

Apache를 구성할 때 /conf/httpd.conf에 있는 http.conf 파일의 기본 구성에 이미 노출되어 있어야 합니다.

php.ini 파일에서 이미 수행된 작업을 수행하려면 httpd.conf에 다음 줄을 추가하여 모든 php.ini 파일을 덮어씁니다:

php_flag   display_errors         on
php_value error_reporting       2039
로그인 후 복사

이것은 php.ini 파일 플래그의 display_errors에 대한 모든 설정을 재정의합니다. error_reporting의 값입니다. 가치 2039 E_ALL 및 ~E_NOTICE를 나타냅니다. E_ALL을 사용하려면 값을 2047로 설정하세요. 이번에도 Apache를 다시 시작해야 합니다.

다음으로 서버에서 오류 보고를 테스트합니다.

error_reporting() 함수와 관련하여 일부 오류 메시지를 보호할 수 있지만 PHP 코어로 인해 발생한 오류는 보호할 수 없습니다. 왜냐하면 PHP 코어로 인해 발생한 오류는 직접적으로 PHP 파일 컴파일 실패를 초래하기 때문입니다. 코딩 규칙 작성으로 인해 발생하는 PHP 오류는 차단할 수 없습니다

일반적인 오류는 다음과 같습니다.

 // Turn off all error reporting;关闭所有的错误
error_reporting(0);
// Report simple running errors;报告一个简单的运行错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings …);包括报告一些未初始化的变量或捕捉变量名的拼写错误
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
// This is the default value set in php.ini;报告所有的错误但不包括E_NOTICE
error_reporting(E_ALL ^ E_NOTICE);
// Report all PHP errors (bitwise 63 may be used in PHP 3);报告所有的错误
error_reporting(E_ALL);
// Same as error_reporting(E_ALL);同上
ini_set(’error_reporting’, E_ALL);
로그인 후 복사

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

위 내용은 PHP에서 오류 수준을 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿