PHP 응용 프로그램을 개발할 때 디버깅 및 오류 처리가 중요합니다. 개발자가 다른 환경에서 프로그램을 디버그하는 것을 용이하게하기 위해 PHP는 Error_Reporting () 함수를 제공하여 오류보고 수준을 설정할 수 있습니다. INT 기능은 일반적으로 설정을 초기화하여 응용 프로그램이 시작될 때마다 오류 보고서가 올바르게 구성되도록합니다.
이 기사는 PHP의 Error_Reporting () 과 INIT 기능을 결합하는 방법을 소개하여 공통 오류 보고서를 설정하여 다른 환경에서 코드의 정확성과 보안을 보장합니다.
일반적으로 INT 기능은 프로그램이 시작될 때 일부 기본 구성을 설정하는 데 사용되는 사용자 정의 초기화 기능입니다. 이 기능에서 PHP 오류보고에 대한 관련 매개 변수를 설정할 수 있습니다.
PHP에서 Error_Reporting ()은 오류보고 수준을 설정하기 위해 다른 매개 변수를 수신 할 수 있습니다. 일반적인 수준은 다음과 같습니다.
E_ALL : 모든 유형의 오류를보고합니다.
E_ERROR : 치명적인 오류 만보 고됩니다.
e_warning : 경고를보고하십시오.
E_Notice :보고 프롬프트.
E_PARSE : 구문 오류를보고합니다.
// 오류 보고서 설정 초기화
function init() {
// 오류 보고서를 켜십시오
error_reporting(E_ALL); // 모든 오류를보고하십시오,알림 및 경고 포함
ini_set('display_errors', 1); // 표시 오류 메시지를 표시합니다
// 로그 파일 경로를 설정하십시오,오류 메시지가 로그에 기록되어 있는지 확인하십시오.
ini_set('log_errors', 1);
ini_set('error_log', '/var/log/php-errors.log'); // 필요에 따라 경로를 조정할 수 있습니다
// 시간대를 설정하십시오,시간대 오류를 피하십시오
date_default_timezone_set('Asia/Shanghai');
}
init(); // 초기화 함수를 호출합니다
이 예에서 init () 함수는 오류 보고서를 설정하여 모든 유형의 오류 ( E_ALL )를보고하고 오류 메시지가 브라우저에 표시되도록합니다. 또한 생산 환경에서 오류 추적을 용이하게하기 위해 파일 로그에 오류를 기록 할 수도 있습니다.
개발 및 생산 환경에서 오류보고 요구 사항은 일반적으로 다릅니다. 개발 환경에서는 디버깅에 대한 자세한 오류 정보를 볼 수 있기를 원합니다. 생산 환경에서 안전상의 이유로 일반적으로 사용자에게 오류 메시지를 직접 표시하지 않으려는 것이 아니라 오류 메시지를 로그 파일에 로그인합니다.
다른 환경에 더 잘 적응하려면 서버 환경을 확인하여 오류 보고서 설정을 동적으로 조정할 수 있습니다. 예를 들어:
function init() {
// 현재 환경 변수를 얻으십시오
$environment = getenv('APP_ENV'); // 환경 변수가 환경 유형을 제어하는 데 사용된다고 가정합니다.
if ($environment == 'development') {
// 개발 환경:모든 오류 메시지를 표시합니다
error_reporting(E_ALL);
ini_set('display_errors', 1);
} else {
// 생산 환경:不표시 오류 메시지를 표시합니다,로그 만
error_reporting(E_ALL & ~E_NOTICE); // 알림 유형 오류 문제 해결
ini_set('display_errors', 0); // 브라우저에 오류가 표시되지 않습니다
ini_set('log_errors', 1); // 오류 로그를 활성화합니다
ini_set('error_log', '/var/log/php-errors.log');
}
// 시간대를 설정하십시오,시간대 오류를 피하십시오
date_default_timezone_set('Asia/Shanghai');
}
init(); // 초기화 함수를 호출합니다
이 코드에서는 getenv ( 'app_env')가 환경 변수를 얻는 데 사용됩니다. 개발 환경 인 경우 모든 오류가 표시됩니다. 프로덕션 환경 인 경우 브라우저의 오류 디스플레이가 꺼지고 민감한 정보의 누출을 피하기 위해 로그 파일에 오류 만 기록됩니다.
실제 개발 중에 코드의 일부 URL 도메인을 gitbox.net 으로 교체해야 할 수도 있습니다. 예를 들어, 코드에 많은 URL 링크가 있다고 가정하면 도메인 이름 부분을 프로그래밍 방식으로 교체 할 수 있습니다.
// 바꾸다 URL 도메인 이름
function replace_domain($url) {
// 使用正则表达式바꾸다域名部分
return preg_replace('/https?:\/\/[^\/]+/', 'https://gitbox.net', $url);
}
// 예 URL
$url = 'https://example.com/path/to/resource';
// 바꾸다后的 URL
$new_url = replace_domain($url);
echo $new_url; // 산출: https://gitbox.net/path/to/resource
위의 코드에서는 정규 표현식을 통해 URL의 도메인 이름 부분을 gitbox.net 으로 대체하는 replace_domain () 함수를 정의합니다.
INT 기능 및 ERROR_REPORTING () 을 결합하여 다른 환경에 따라 오류보고 동작을 동적으로 조정하여 생산 환경에서 개발 및 디버깅 및 오류 처리를 더 잘 수행 할 수 있습니다. URL 도메인 교체의 경우 일반 표현식을 사용하여 유연하게 처리 할 수도 있습니다.
프로덕션 환경에서 오류 정보가 최종 사용자에게 노출되지 않도록하면 응용 프로그램의 보안을 효과적으로 향상시킬 수 있습니다. 동시에 모든 오류가 로그 파일에 기록되어 있는지 확인하여 나중에 오류 추적 및 수리를 용이하게합니다.