답변:
경고를 유발하는 모든 것을 수정해야하지만으로 오류의 가시성을 제어 할 수 있습니다 error_reporting()
. 경고 메시지를 건너 뛰려면 다음과 같이 사용할 수 있습니다.
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
경고 이외의 모든 오류보고를 활성화하면에 대한 더 나은 선택이 될 것 같습니다 error_reporting
.
모든 오류 메시지를 억제하기 위해 함수 호출 앞에 @ 를 넣을 수 있습니다 .
@yourFunctionHere();
dns_get_record
은 경고를 발생시킵니다. 코드가 경고를 보상 할 수 있지만 여전히 경고를 던집니다. 오류보고를 끄면 프로덕션 서버에서는 작동하지만 개발 서버에서는 작동하지 않습니다. XML 컨텐츠를 생성하는 경우, 경고로 인해 서버가 잘못된 XML을 전송하므로 경고로 인해 브라우저가 렌더링되지 않습니다. 때로는 당신이 그것을 원하지만 이미 보상 한 일시적인 DNS 조회 실패로 인한 것이 아닙니다.
Core Php에서 일반 포함 파일 또는 개별 파일의 맨 위에 경고 메시지 세트 error_reporting (0)을 숨기려면.
Wordpress에서 경고 및 알림 숨기기 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);
질문에 정확하게 대답하지는 않지만 일부 상황에서는 이것이 더 나은 타협이라고 생각합니다.
타사 라이브러리의 printf () 문으로 인해 경고 메시지가 나타납니다. 제 3자가 코드를 수정하는 동안 일시적인 해결 방법 인 원인이 무엇인지 정확히 알고있었습니다. 경고가 표시되지 않아야한다는 데 동의하지만 경고 메시지가 화면에 표시되어 클라이언트에게 작업을 보여줄 수 없습니다. 내 해결책 :
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
경고는 여전히 페이지 소스에 있었지만 클라이언트에게는 보이지 않습니다.
ob_start()
하고 싶습니다 ob_end_clean()
. 이렇게하면 물건이 브라우저로 전송되지 않습니다 (여기에서).
더 나은 솔루션은 .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을 사용하여 경고를 표시하지 않을 수 있지만 가장 좋은 방법은 스크립트를 처음에 수정하는 것입니다.
방법을 모르는 경우 질문을 편집하여 문제의 줄과 경고를 표시하십시오.
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();
}