클라이언트 측에 PHP 오류/예외를 반환해야하는 경우 (권장되지는 않지만 개발하기가 쉽다) PHP 용 사용자 정의 error/uncaught-exception 처리기가 필요합니다. 이렇게하면 오류/예외가 표시되는 방식을 사용자 정의 할 수 있습니다.
다음은 오류 및 캐치되지 않은 예외를 JSON 객체로 출력하는 샘플 코드입니다.
// Set error handler
set_error_handler('api_error_handler');
function api_error_handler($errno, $errstr) {
return api_error($errstr, $errno, 500);
}
// Set uncaught exceptions handler
set_exception_handler('api_exception_handler');
function api_exception_handler($exception) {
return api_error($exception->getMessage(), $exception->getCode(), 500);
}
// Error/Exception helper
function api_error($error, $errno, $code) {
// In production, you might want to suppress all these verbose errors
// and throw a generic `500 Internal Error` error for all kinds of
// errors and exceptions.
if ($environment == 'production') {
$errno = 500;
$error = 'Internal Server Error!';
}
http_response_code($code);
header('Content-Type: application/json');
return json_encode([
'success' => false,
'errno' => $errno,
'error' => $error,
]);
}
그러나 그것은 모두가 아니다; 사용자 정의 오류 처리기는 치명적인 오류를 처리 할 수 없기 때문에 여전히 치명적인 오류 메시지가 표시됩니다. 당신은 ini_set()
에 대한 호출을 표시하는 오류를 해제해야합니다
ini_set('display_errors', 0);
는 어떻게 치명적인 오류를 처리하기 위해? 치명적인 오류는 종료시
register_shutdown_function()
으로 처리 할 수 있습니다. 종료 처리기에서
error_get_last()
을 호출하여 마지막 오류 정보를 가져와야합니다. 따라서 :
그런 다음 자바 스크립트 측면에서 오류 콜백을 추가하고 오류 정보를 사용자에게 표시해야합니다.
결국, 모두 구현하는 대신 성숙한 오류/예외 처리기 패키지를 사용하지 않으시겠습니까? 만나십시오 Whoops.
코드는 괜찮습니다. 구문 분석 된 json에서 PHP 오류를보고 편의를 위해 각도 표현을 바로 볼 수 있습니다. 정보 유출에 대한 좋은 힌트. – ItsmeJulian