찾다
类库下载PHP类库우리가 알아야 할 것은 PHP의 잘못된 구성이 무엇입니까? PHP 오류 메커니즘 요약

재인쇄 시 출처를 표시해 주세요. PHP의 잘못된 구성에 대해 무엇을 알아야 합니까? PHP의 오류 메커니즘 요약(재인쇄)
// 엄격한 표준: 17행의 /tmp/php/index.php에서 변수만 참조로 전달되어야 합니다. functionchange(&$var) {
$var += 10 ;
}


$var = 1;
change(++$var);// E_STRICT
E_RECOVERABLE_ERROR
이 수준은 실제로 ERROR 수준이지만 오류 처리에 의해 발견되지 않으면 E_ERROR와 동일하게 동작합니다.
형식 매개변수가 유형을 정의했지만 호출 시 잘못된 유형이 전달되는 경우가 자주 발생합니다. 오류 알림에는 E_ERROR의 치명적인 오류 앞에 Catachable이라는 단어도 있습니다.
//Catchable 치명적인 오류: testCall()에 전달된 인수 1은 A의 인스턴스, B의 인스턴스가 제공되어야 하며 37행의 /tmp/php/index.php에서 호출되고 /tmp/php/index에 정의되어야 합니다. .php 온라인 33class A {
}class B {
}function testCall(A $a) {
}


$b = new B();
testCall($b);
E_DEPRECATED
이 오류는 이전 버전의 함수를 사용하고 있으며 이 함수의 이후 버전이 비활성화되거나 유지되지 않을 수 있음을 의미합니다.
예를 들어, 컬의 CURLOPT_POSTFIELDS는 @FILENAME을 사용하여 파일을 업로드합니다.
// 더 이상 사용되지 않음: 컬_setopt(): 파일 업로드를 위한 @filename API 사용은 더 이상 사용되지 않습니다. /tmp/php /에서 대신 CURLFile 클래스를 사용하십시오. index.php 온라인 42$ch = cur_init("http://www.remotesite.com/upload.php");
curl_setopt($ch, CURLOPT_POSTFIELDS, array('fileupload' => '@'." test"));
E_CORE_ERROR, E_CORE_WARNING
이 두 오류는 PHP 엔진에 의해 생성되며 PHP 초기화 프로세스 중에 발생합니다.
E_COMPILE_ERROR, E_COMPILE_WARNING
이 두 오류는 PHP 엔진에 의해 생성되며 컴파일 프로세스 중에 발생합니다.
E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE, E_USER_DEPRECATED,
이러한 오류는 모두 사용자에 의해 발생합니다. Trigger_error를 사용하는 것은 사용자가 다양한 오류 유형을 트리거하는 구멍과 같습니다. 이는 try catch 예외를 피하는 좋은 방법입니다.
trigger_error("0으로 나눌 수 없습니다", E_USER_ERROR);// E_USER_ERROR// E_USER_WARING// E_USER_NOTICE// E_USER_DEPRECATED
E_ALL
E_STRICT 모든 오류 및 경고 메시지가 출력됩니다.
오류 제어
PHP에는 오류 및 오류 로그 표시를 제어할 수 있는 많은 구성과 매개변수가 있습니다. 첫 번째 단계에서 우리가 알아야 할 것은 PHP의 잘못된 구성이 무엇인지입니다.
php+php-fpm 모델에 따르면 실제로 php 오류 표시에 영향을 미치는 두 가지 구성 파일이 있습니다. 하나는 php 자체의 구성 파일인 php.ini이고, 다른 하나는 php-fpm의 구성 파일입니다. fpm.php-fpm.conf.
php.ini 구성
error_reporting = E_ALL // 오류 수준, 수준 보고 error_log = /tmp/php_errors.log // php에서 오류 표시 위치를 기록합니다. display_errors = On // 오류 표시 여부 표시 출력, 이 출력은 페이지일 수도 있고 stdoutdisplay_startup_errors = On일 수도 있습니다. // 페이지에 시작 프로세스의 오류 정보를 표시할지 여부, 위에서 언급한 시작 중에 발생하는 몇 가지 Core 유형 오류가 있다는 점을 기억하세요. 이러한 오류가 페이지에 표시되는지 여부를 제어합니다. log_errors = On // 오류 로그 기록 여부 log_errors_max_len = 1024 // 오류 로그의 최대 길이ignore_repeated_errors = Off // 반복 오류 무시 여부 track_errors = Off // 마지막 오류 기록을 위해 전역 변수 $php_errormsg 사용 여부 xmlrpc_errors = 0 / /오류를 기록하기 위해 XML-RPC 오류 메시지 형식을 사용할지 여부 xmlrpc_error_number = 0 // XML-RPC fallCode 요소의 값으로 사용됩니다. html_errors = On // 출력의 기능 및 기타 정보를 HTML 링크로 변환할지 여부 docref_root = http://manual/en/ // html_errors가 활성화된 경우 이 링크의 루트 경로는 무엇입니까 fastcgi.logging = 0 // PHP 오류를 fastcgi에 던질지 여부
error_reporting과 display_errors의 차이점이 무엇인지 자주 묻는 질문을 받습니다. 이 두 기능은 완전히 다릅니다.
PHP는 기본적으로 로그 및 표준 출력을 수행합니다(fpm 모드인 경우 표준 출력은 페이지입니다)
error_reporting의 매개변수는 오류 수준입니다. 오류를 트리거해야 하는 수준을 나타냅니다. 모든 오류 수준이 오류를 유발할 필요가 없다고 PHP에 알리면 로그나 페이지 모두 이 오류를 표시하지 않으며 이는 아무 일도 일어나지 않는 것과 같습니다.
display_errors는 오류 메시지가 표준 출력에 표시되어야 하는지 여부를 제어합니다.
log_errors는 오류 메시지가 로그에 기록되어야 하는지 여부를 제어합니다.
error_log는 오류 로그가 표시되는 위치입니다. php-fpm에서 다시 작성하는 경우가 많기 때문에 cli와 fpm의 오류 로그가 동일한 파일에 있지 않은 경우가 종종 있습니다.
ignore_repeated_errors 태그는 중복 로그가 있는 경우 로그 하나만 기록되도록 제어합니다(예:
error_reporting(E_ALL);
ini_set('ignore_repeated_errors', 1);
ini_set). ('ignore_repeated_source', 1);$a = $c; $a = $c; //E_NOTICE
//주의사항: 정의되지 않은 변수: 20행의 /tmp/php/index.php에 있는 c
두 번 나왔을 텐데 지금은 한 번만 나오네요...
track_errors를 활성화하면 마지막 오류 정보가 변수에 저장됩니다. 이는 로그를 기록할 때 유용할 수 있습니다. 하지만 정말 쓸모없다고 생각합니다...
html_errors와 docref_root는 매우 사용자 친화적인 구성입니다. 이 두 매개변수를 구성한 후 우리가 반환하는 오류 메시지에 문서의 일부 정보가 포함되어 있으면 링크가 됩니다.
error_reporting(E_ALL);ini_set('html_errors', 1);ini_set('docref_root', "https://secure.php.net/manual/zh/");include("a2.php"); //E_WARNING
페이지에 다음이 표시됩니다.
을 사용하면 오류가 발생한 위치를 빠르게 찾을 수 있습니다. 참 인간적이지 않나요~
php-fpm에서의 설정
error_log = /var/log/php-fpm/error.log // php-fpm 자체 로그 log_level = 주의 // php-fpm 자체 로그 Logging level php_flag[display_errors] = off // php.ini의 구성 변수를 재정의합니다. 이는 프로그램의 ini_set으로 재정의할 수 있습니다. php_value[display_errors] = off // php_flagphp_admin_value[error_log] = /tmp/www-error.log와 같습니다. // php.ini의 구성 변수를 덮어쓰며 프로그램의 ini_set으로 재정의할 수 없습니다. php_admin_flag[log_errors] = on // php_admin_valuecatch_workers_output = yes // fpmworker의 출력을 캡처할지 여부 request_slowlog_timeout = 0 // 느린 로그 기간 Slowlog = /var/log/php-fpm/www-slow.log // 느린 로깅
php-fpm 구성에도 error_log 구성이 있는데, 이는 php.ini의 error_log 구성과 종종 혼동됩니다. 그러나 기록하는 내용은 다릅니다. php-fpm의 error_log는 fpm 시작 및 종료와 같은 php-fpm 자체의 로그만 기록합니다.
php.ini의 error_log는 PHP 프로그램 자체를 기록하는 오류 로그입니다.
따라서 php-fpm에서 php.ini의 error_log 구성을 재정의하려면 다음 함수를 사용해야 합니다:
php_flag
php_value
php_admin_flag
php_admin_value
이 네 가지 함수 admin 함수는 이 변수가 설정된 후에는 ini_set을 사용하여 코드에서 변수를 재할당할 수 없음을 나타냅니다. php_flag/value는 여전히 php 코드의 ini_set을 기반으로 합니다.
느린 로그는 fpm에 의해 기록됩니다. request_slowlog_timeout 설정을 사용하여 느린 로그의 길이를 결정할 수 있습니다.
요약
우리가 흔히 혼동하는 것은 로그 문제와 특정 수준의 로그가 로그에 기록되지 않는 이유입니다. 가장 중요한 것은 error_log, display_errors, log_errors의 세 가지 구성을 살펴보는 것입니다. 그러나 구성을 볼 때 php.ini의 구성이 무엇인지, php-errors의 구성이 무엇인지 구별하는 것도 주의할 필요가 있습니다. fpm.ini.

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기