PHP에서 오류 로그를 얻는 방법은 여러 가지가 있습니다. 아래에서는 이러한 문제를 해결하는 방법에 대해 간략하게 소개하겠습니다.
<?php error_reporting (0); register_shutdown_function($err = 'my_error_handler') OR set_error_handler($err,E_ALL); // 同时注册两个函数. // 函数参数错误 $original = unserialize ( array(423142,2134234)); // 不可对0除 echo 1/0; // 不存在的数组索引 echo $_GET['aa']; // 不存在的常量 PHP_E; // 不存在的变量 echo $var; // 函数参数错误 strlen(array(2434)); // 函数参数错误 md5(array(1)); // 用户自定义错误 trigger_error('safdds',E_USER_NOTICE); // 不存在的函数 php中断 // tes(); // 不存在的方法 php中断 $ts = new afsd(); function my_error_handler($errno=0 ,$errstr=0 , $errfile=0 ,$errline=0){ if($errno && $errfile){ if(true){ $earr = array(); $earr['type'] = $errno; $earr['message'] = $errstr; $earr['file'] = $errfile; $earr['line'] = $errline; } }else{ $earr = error_get_last(); } echo '<pre class="brush:php;toolbar:false">'; print_r($earr); return array(); }
PHP 오류의 경우 유형, 오류 발생 시기, 반환 값이 무엇인지 명확하게 이해해야 합니다.
경고, 오류, 제안, 프롬프트 및 기타 세부 유형을 구분하지 않으면 PHP 오류 유형에는 두 가지 유형이 있다는 것을 이해할 수 있습니다.
하나는 강제 인터럽트 프로그램 오류입니다. 오류, 메소드가 존재하지 않습니다. 메모리 부족, 시간 초과
한 가지 유형은 경고와 같은 중단되지 않는 오류입니다.
인터럽트 프로그램 오류를 얻으려면 Register_shutdown_function 함수를 사용하고 메모리 함수를 등록한 다음 오류 정보를 얻어야 합니다. 예를 들어 존재하지 않는 오류 라인이 여러 개인 경우에만 이 방법을 사용할 수 있습니다. 기능을 사용하면 처음에만 해당 실수를 얻을 수 있습니다. 이는 실제로 장점이 있으며, 하나를 수정하면 다음 오류로 이동합니다.
비중단 오류의 경우,register_shutdown_function을 사용하면 작동이 매우 어려워집니다. 이때 오류 수준 상수를 터치할 때마다 set_error_handler가 필요합니다. 오류 함수는 한 번 호출됩니다. 내부에서 오류 로그를 가져올 수도 있습니다. 그러나 이 함수는 error_get_last 함수를 상속하므로 error_get_last가 매개변수에 의해 모두 전달되어 비어 있음을 알 수 있습니다.
두 가지 기능을 함께 사용하면 프로그램 오류의 99%를 얻을 수 있습니다. PHP 프로그램의 경우 이는 눈에 띄게 가벼운 것으로 간주될 수 있습니다.
위 예제를 실행해 보세요.
코드와 텍스트를 결합하여 PHP에서 오류 로그를 얻는 방법을 정리했습니다. 향후 작업에서 이러한 문제에 직면하는 모든 사람에게 도움이 되기를 바랍니다.