오류 에코는 개발 모드에서 흔히 사용되지만, 공식 환경에서는 많은 애플리케이션이 이 옵션을 끄는 것을 잊어버립니다. 오류 에코는 민감한 정보를 많이 노출시킬 수 있어 공격자의 다음 공격을 용이하게 합니다.
display_errors
이 옵션을 끄는 것이 좋습니다. Error echo는 개발 모드에서 일반적으로 사용되지만 형식 환경에서는 많은 애플리케이션이 이 옵션을 끄는 것을 잊어버립니다. 오류 에코는 민감한 정보를 많이 노출시킬 수 있어 공격자의 다음 공격을 용이하게 합니다. 이 옵션을 끄는 것이 좋습니다.
display_errors = On
On 상태에서 오류가 발생하면 오류가 보고되고 오류 메시지가 나타납니다.
dispaly_errors = Off
Off 상태에서 오류가 발생하면 프롬프트는 다음과 같습니다: 서버 오류. 하지만 오류 메시지는 나타나지 않습니다.
log_errors
정식 환경에서 사용하고 오류 정보를 로그에 기록하면 됩니다. 오류 에코를 꺼야 할 때입니다.
PHP 개발자의 경우 제품을 사용한 후 가장 먼저 해야 할 일은 이러한 오류로 인해 공개되는 경로, 데이터베이스 연결, 데이터 테이블 및 기타 정보로 인해 해커의 공격을 받지 않도록 display_errors 옵션을 끄는 것입니다.
제품을 사용하고 나면 필연적으로 오류 메시지가 표시되는데, 개발자에게 매우 유용한 이 정보를 어떻게 기록해야 할까요?
PHP의 log_errors를 켜기만 하면 됩니다. 기본적으로 Apache의 error.log 파일과 같은 웹 서버의 로그 파일에 기록됩니다.
물론 특정 파일에 오류 로그를 기록할 수도 있습니다.
# vim /etc/php.inidisplay_errors = 끄기
log_errors = 켜기
error_log = /var/log/php-error.log
error_log = syslog를 설정할 수도 있습니다 , 이러한 오류 메시지는 운영 체제 로그에 기록됩니다.
display_errors = Off //중국어로 표시한다는 것은 표시를 의미하므로, display_error=off는 오류를 표시하지 않는다는 뜻입니다!
error_reporting은 오류 메시지 보고 수준을 설정합니다.
2047 E_ALL이어야 한다는 것을 기억합니다.
php.ini
파일에는 많은 구성 설정이 있습니다. Linux에 PHP 및 Apache를 설치하는 것처럼 이미 php.ini 파일을 설정하고 적절한 디렉토리에 배치했어야 합니다.
2(참고자료 참조). PHP 애플리케이션을 디버깅할 때 알아야 할 두 가지 구성 변수가 있습니다. 다음은 이 두 변수와 해당 기본값입니다.
display_errors = Off //모든 오류 메시지를 끕니다. ON이면 모든 오류 메시지가 표시됩니다.
error_reporting = E_ALL
E_ALL은 잘못된 코딩 관행부터 무해한 팁, 오류까지 모든 것을 다룹니다. E_ALL은 개발 프로세스에 비해 너무 상세합니다. 왜냐하면 변수가 초기화되지 않는 등의 작은 작업에 대한 프롬프트도 화면에 표시하기 때문입니다. 이로 인해 브라우저의 출력이 엉망이 되기 때문에
2047을 사용하지 않는 것이 좋습니다. , 기본값을 변경하는 것이 가장 좋습니다. For: error_reporting = E_ALL & ~E_NOTICE
PHP.ini에서 display_errors = Off 실패에 대한 솔루션
문제:
Display_errors = Off가 PHP에서 명확하게 설정되었습니다. php.ini 파일을 설정했지만 실행 프로세스 중에 웹 페이지에 오류 메시지가 계속 나타납니다.
해결책:
log_errors=를 확인하세요.
On, 공식 설명에 따르면 이 log_errors가 On으로 설정되면 error_log 파일을 지정해야 합니다. 지정되지 않거나 지정된 파일에 쓰기 권한이 없으면 오류가 계속 발생합니다.
일반 출력 채널 밖에서도 지정된 Off of display_errors가 무효화되고 오류 메시지가 계속 인쇄됩니다. 따라서 log_errors =
끄면 문제가 해결되었습니다.
error_reporting(7)이 오류 메시지 보고 수준 설정을 의미하는 것으로 흔히 볼 수 있습니다.
값 상수
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING 🎜>256 E_USER_ERROR < ?php
//오류 보고 비활성화
error_reporting(0);
//런타임 오류 보고
error_reporting(E_ERROR | E_WARNING | E_PARSE)//모든 오류 보고
error_reporting(E_ALL)
?>