PHP에 대해 많은 것을 배웠습니다. PHP 프로그램의 구문 오류를 완전히 마스터했는지 궁금합니다. 그렇지 않다면 이 기사를 따라 계속 학습하세요.
PHP 프로그램 구문 오류.
시나리오 1: 우리 프로젝트는 알람 모니터링(10분마다 웹사이트의 고정 링크에 정기적으로 접속)으로 설정되어 있습니다. 하루에 2~3번씩 500개의 알림을 받았던 때가 있었습니다. , 그런데 다시 수동으로 접속하면 접속이 정상적으로 되는데...
가장 흔한 오류여야 하고, 문법적인 오류도 금방 다시 나타날 수 있으니 오류 메시지만 노출되면 바로 문제를 해결할 수 있습니다. .
로컬이나 테스트 환경이라면 보통 이렇게 처리합니다. 프로그램 입구에서 출력 오류 메시지만 설정하면 됩니다.
//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()
을 사용)을 사용하여 드디어 성공적으로 복구되었습니다. mysqli_real_escape_string()
的地方)导致的fatal级报错,最终才顺利修复了。
场景二:有一次,一个同事说图片上传不上去了,一直报错500,之前还好好的,但没找出是什么问题,因为那块当时是我负责开发的,所以就过来找我,各种检查都没发现是什么问题,其它页面访问正常,本页面把代码全删除了再上传还是报错,找了很久最终才发现是磁盘满了o(╥﹏╥)o…
因磁盘空间不足,没有足够空间读写数据而导致的500报错极不常见,且不易及时发现。通常遇到500问题,很快想到的是程序错误,其实还有可能是磁盘空间不足了,如果在程序上为找到任何问题,可以查看下是否是磁盘空间不足问题哦~df -h
df - h
디스크 공간 사용량을 확인하세요
위 내용은 PHP 프로그램 액세스 보고서 500 오류 처리 계획의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!