PHP에서 주의 메시지 제거
PHP 코드가 있습니다.실행하면 경고 메시지가 나타납니다.
이러한 경고 메시지를 삭제/억제/무시하려면 어떻게 해야 합니까?
경고의 원인이 되는 것은 수정해야 하지만 에러 표시를 제어할 수 있습니다.경고 메시지를 건너뛰려면 다음과 같은 방법을 사용할 수 있습니다.
error_reporting(E_ERROR | E_PARSE);
함수 호출 앞에 @ 를 붙여 모든 에러 메시지를 억제할 수 있습니다.
@yourFunctionHere();
다른 모든 오류 보고를 활성화한 채로 경고를 억제하려면:
error_reporting(E_ALL ^ E_WARNING);
오류뿐만 아니라 경고도 표시하지 않으려면
// Turn off all error reporting
error_reporting(0);
다른 모든 오류를 표시하는 동안 경고 및 기타 오류 유형(예: 알림)을 표시하지 않으려면 다음을 수행할 수 있습니다.
error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);
Core Php에서 일반적인 include 파일 또는 개별 파일 상단에 경고 메시지 세트 error_reporting(0)을 숨깁니다.
Wordpress hide Warnings and Notices에서 wp-config.php 파일에 다음 코드를 추가합니다.
ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
php.ini에서는 다음과 같이 합니다.
error_reporting = E_ALL & ~E_WARNING & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
치명적인 오류만 기록되고 경고는 기록되지 않습니다.
질문에 정확히 답하지는 않았지만, 상황에 따라서는 이것이 더 나은 타협이라고 생각합니다.
서드파티 라이브러리의 printf() 스테이트먼트로 인해 경고 메시지가 표시되었습니다.원인이 무엇인지 정확히 알고 있었습니다. 서드파티가 코드를 수정하는 동안 임시로 해결했습니다.경고를 억제해서는 안 된다는 것은 인정하지만, 경고 메시지가 화면에 뜨면서 고객에게 작업을 시연할 수 없었습니다.솔루션:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
경고는 여전히 페이지 소스에 있지만 클라이언트에게는 보이지 않습니다.
더 좋은 해결책은 .htaccess 설정이라고 생각합니다.이렇게 하면 어플리케이션 코드를 변경할 필요가 없습니다.다음은 Apache2의 지침입니다.
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
모든 경고를 무시하려면 코드 상단에 있는 다음 샘플을 사용하십시오.
error_reporting(0);
error_module(오류)을 사용하여 경고를 억제할 수 있지만 가장 좋은 방법은 처음부터 스크립트를 수정하는 것입니다.
방법을 모를 경우 질문을 편집하여 해당 행과 표시되는 경고를 보여 주십시오.
주의: 이는 경고를 억제하기 위한 것이지 치명적인 오류가 아닙니다.
@ 연산자를 사용하면 치명적인 오류를 제외한 모든 경고가 숨겨지지만 @ 연산자를 추가하면 스크립트의 실행 시간이 길어집니다.
예@function_name();
또 다른 방법은 .ini 설정 파일을 사용하여 error_displaces 섹션을 편집하는 것입니다.아래와 같이 편집하면 모든 오류가 계속 표시되지만 스크립트의 경고가 표시되지 않습니다.
error_reporting(E_ALL ^ E_WARNING);
그러나 서버 전체가 아닌 특정 프로젝트에서 경고를 억제해야 하는 경우 다음 코드 행으로 충분합니다.
ini_set('error_reporting', E_ALL ^ E_WARNING);
Error Control Operator에 대한 답변이 이미 있지만 설명이 부족합니다.사용할 수 있습니다.@
모든 식을 사용하여 오류를 숨깁니다(치명적 오류 제외).
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
디버깅은 빠르고 완벽한 방법입니다.단, 로컬 버전에 영구 포함하거나 프로덕션에서 절대 사용하지 마십시오.불필요한 짜증이 많이 날 거예요.
대신 다음 사항을 고려해야 합니다.
1. 승인된 답변에 기재된 오류 보고 설정.
error_reporting(E_ERROR | E_PARSE);
또는 PHP INI 설정에서
ini_set('display_errors','Off');
2. 예외 포착
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}
언급URL : https://stackoverflow.com/questions/1987579/remove-warning-messages-in-php
'sourcecode' 카테고리의 다른 글
SQL 스크립트를 실행하여 테이블 및 행 생성 (0) | 2022.10.27 |
---|---|
MYSQL 쿼리/1주일 전 날짜(UTC의 모든 날짜) (0) | 2022.10.27 |
텐서플로우의 tf.nn.max_pool의 'SAME' 패딩과 'VALID' 패딩의 차이점은 무엇입니까? (0) | 2022.10.27 |
부모 페이지에서 iframe 내의 JavaScript 코드 호출 (0) | 2022.10.27 |
Android Recycleer View 스크롤 성능 (0) | 2022.10.27 |