집 >데이터 베이스 >MySQL 튜토리얼 >PHP에서 mysqli_connect가 실패할 때 내 사용자 정의 오류 메시지가 표시되지 않는 이유는 무엇입니까?
과거에는 PHP가 MySQL 확장을 사용하여 데이터베이스에 연결했는데, 이 경우 수동 오류 처리가 필요했습니다. . 그러나 mysqli가 도입되면서 오류가 자동으로 발생하므로 if (!$conn)과 같은 수동 검사가 필요하지 않습니다.
PHP 8.1 이상에서는 mysqli가 오류에 대한 예외를 발생시킵니다. 따라서 코드의 사용자 정의 오류 메시지는 표시되지 않습니다.
권장되는 접근 방식은 데이터베이스 연결 오류를 처리하기 위해 try-catch 블록에 의존하는 대신 try-catch 블록을 사용하는 것입니다. 수동 확인:
try { $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName); } catch (Exception $e) { // Handle the error here }
사용자에게 오류 메시지를 숨기려면 다음을 설정하세요. php.ini에서 display_errors를 0으로 설정하거나 ini_set()을 사용하여:
ini_set('display_errors', 0);
오류 처리기를 사용하여 특정 오류 페이지 대신 일반 오류 페이지를 표시합니다. 오류 메시지:
set_exception_handler(function ($e) { // Log the error error_log($e); // Set HTTP status code to 500 http_response_code(500); // Check display_errors setting if (ini_get('display_errors')) { echo $e; } else { echo "<h1>500 Internal Server Error</h1>An internal server error has occurred. Please try again later."; } });
별도의 인증서 사용 설치 스크립트 또는 백업 시나리오에 대한 자격 증명을 테스트하기 위해 try-catch를 사용한 연결 테스트:
try { $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName); } catch (Exception $e) { // Handle the error }
PHP 8.2 이상에서는 데이터베이스 비밀번호가 스택에서 숨겨집니다. 추적합니다.
위 내용은 PHP에서 mysqli_connect가 실패할 때 내 사용자 정의 오류 메시지가 표시되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!