2014-04-01 1 views
4

나는 다음과 같은 스크립트를 실행하면 :PHP : PHP 오류/경고 /주의 사항의 이중 출력

<br /> 
<b>Notice</b>: test notice in <b>path/to/script/test.php</b> on line <b>3</b><br /> 
end of scriptPHP Notice: test notice in path/to/script/test.php on line 3 

스크립트는 PHP 버전과 IIS8에서 실행했다 : 나는 다음과 같은 출력을 얻을

<?php 
error_reporting(E_ALL); 
trigger_error('test notice', E_USER_NOTICE); 
die('end of script'); 

을 5.4.19.

반환 된 HTTP 상태 코드 (200)

"display_errors를"이 설정되어있다 "에"와 "error_reporting은"에 php.ini 파일에서 "E_ALL"로 설정합니다. 따라서 스크립트의 첫 번째 줄은 설명을위한 것입니다.

동작은 모든 오류보고 상수 (E_ERROR, E_WARNING 등)와 동일합니다.

누구든지 통지의 두 번째 산출물 출처를 알고 있습니까? 그리고 특히 그것을 제거하는 방법?

+0

스크립트는 PHP 스크립트에 대한 오류보고를 사용합니다. 오류에 대해서는 3 행의'test.php' 파일을보십시오. –

+0

IIS에 대해서는 잘 모르겠지만 명령 줄 PHP는 stdout과 stderr에 오류 메시지를 출력합니다. 웹 서버를 설치 한 경우에도 마찬가지 인 것 같습니다. –

+0

당신은 첫 번째 줄'error_reporting (E_ALL);'에 주석을 달았습니다. – dhpratik

답변

0

이 문제를 해결하려면 IIS에서 사이트의 기본 설정을 변경해야했습니다. IIS_USER에서 "Connect As"를 선택하면 PHP 오류 메시지의 이중 출력이 사라졌습니다. 나는 아직도 이유를 모르지만, 적어도 그것이 작동합니다.

0
PHP는 모든 오류를보고하고 출력을 복제 화면에 오류를 인쇄 할 수 PHP를 설정하여 PHP 구성에서 사용할 수 display_errors 지시, 두 번째 라인에 다음 필요없이를 설정
error_reporting(E_ALL);
스크립트에서

첫 번째 줄 .

+0

죄송하지만 그건 사실이 아닙니다. "error_reporting()"함수는 아무 것도 출력하지 않고 단지 php.ini에 설정된 "error_reporting"지시어를 덮어 씁니다. 그리고 두 번째 출력이 발생하지 않습니다. – Healerz

2

당신은 둘

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

오류가 두 배가됩니다 설정 한 경우 :

PHP 공지 : 정의되지 않은 변수 : 테스트를 /path/to/script.php 에 줄에 8

알림 : 정의되지 않은 변수 : test in /path/to/script.php on line 8

하나 또는 다른 하나를 끄거나 set a custom error handler으로 설정해보십시오.