sourcecode

PHP에서 주의 메시지 제거

copyscript 2022. 10. 27. 22:24
반응형

PHP에서 주의 메시지 제거

PHP 코드가 있습니다.실행하면 경고 메시지가 나타납니다.

이러한 경고 메시지를 삭제/억제/무시하려면 어떻게 해야 합니까?

경고의 원인이 되는 것은 수정해야 하지만 에러 표시를 제어할 수 있습니다.경고 메시지를 건너뛰려면 다음과 같은 방법을 사용할 수 있습니다.

error_reporting(E_ERROR | E_PARSE);

함수 호출 앞에 @ 를 붙여 모든 에러 메시지를 억제할 수 있습니다.

@yourFunctionHere();

다른 모든 오류 보고를 활성화한 채로 경고를 억제하려면:

error_reporting(E_ALL ^ E_WARNING); 

오류뿐만 아니라 경고도 표시하지 않으려면

// Turn off all error reporting
error_reporting(0);

오류 보고 - PHP 설명서

다른 모든 오류를 표시하는 동안 경고 및 기타 오류 유형(예: 알림)을 표시하지 않으려면 다음을 수행할 수 있습니다.

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

반응형