>  기사  >  백엔드 개발  >  PHP는 자체 메소드를 호출할 때 오류 500을 보고합니다.

PHP는 자체 메소드를 호출할 때 오류 500을 보고합니다.

(*-*)浩
(*-*)浩원래의
2019-09-17 11:44:003244검색

http 요청 오류 상태 코드 500의 경우 일반적인 설명은 다음과 같습니다. 서버에 오류가 발생하여 요청을 완료할 수 없음(예: 내부 서버 오류)을 의미하지만 특정 문제를 자세히 분석해야 함을 의미합니다.

PHP는 자체 메소드를 호출할 때 오류 500을 보고합니다.

PHP 프로그램 구문 오류 발생

시나리오 1: 우리 프로젝트는 알람 모니터링으로 설정되었습니다(웹 사이트의 고정 링크는 10분마다 액세스하도록 예정되어 있습니다). 하루에 두세번씩 메일로 500에러가 떴는데, 수동접속을 해보니 접속이 정상적으로 되더라구요... (추천학습 : PHP프로그래밍 입문부터 숙달까지)

가장 많이 발생하는 에러일텐데요, 그리고 문법 오류도 빠르게 재현할 수 있어 오류 메시지가 노출되는 한 문제는 즉시 해결될 수 있습니다.

로컬이나 테스트 환경이라면 보통 이렇게 처리합니다. 프로그램 입구에서 출력 오류 메시지만 설정하면 됩니다.

//error_reporting设置应该报告的错误,下面表示除了 E_NOTICE,报告其他所有错误
error_reporting(E_ALL ^ E_NOTICE);
//输出错误
ini_set('display_errors', 1);

하지만 온라인 환경에서는 사용자가 사용하기 때문에 허용이 불가능합니다. 우리가 너무 벌거벗었거든요. 인쇄 오류가 있으면 어떻게 해야 하나요? 프로그램 항목 파일에서 로그 파일에 오류 출력을 설정할 수 있습니다. 구체적인 코드는 다음과 같습니다.

error_reporting(E_ALL ^ E_NOTICE);
//禁止把错误输出到页面
ini_set('display_errors', 0);
//设置错误信息输出到文件
ini_set('log_errors', 1);

//指定错误日志文件名
$error_dir = '/logs/err/';
$error_file = $error_dir . date('Ymd').'.log';
//目录不存在就创建
if (!is_dir($error_dir)){
    mkdir($error_dir, 0777, true);
}
//文件不存在就创建之
if(!file_exists($error_file)){
    $fp = fopen($error_file, 'w+');
    if($fp){
        fclose($fp);
    }
}

//设置错误输出文件
ini_set("error_log", $error_file);

//程序正常执行逻辑......

방금 언급한 시나리오 1의 문제는 위의 방법으로 로그에 출력한 후에 나중에 알게 되었습니다. mysql 연결이 비정상적으로 끊겨서 프로그램이 계속 실행됐던 거에요. (mysql 접속할 땐 정상이었는데, 특정 쿼리 메소드를 호출하면 에러가 나더군요. mysqli_real_escape_string() 메소드를 사용한 곳이었던 걸로 기억합니다. ) 치명적인 오류가 마침내 성공적으로 복구되었습니다.

위 내용은 PHP는 자체 메소드를 호출할 때 오류 500을 보고합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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