2011-10-08 2 views
3

많은 헤더 리디렉션을 사용하지만 리디렉션으로 인해 표시되지 않는 PHP 경고가 표시되지 않습니다. 경고가 발행되면 헤더 리다이렉션을 중단시키는 PHP/Apache 구성 옵션이 있습니까?PHP/Apache - 헤더 리디렉션 전에 스크립트 경고를 보는 방법?

사실 내 개발 컴퓨터에서는 스크립트 실행을 중지하고 다른 서버에서는 보이지 않게해야한다는 경고가 표시됩니다. 즉, 일부 구성 설정과 스크립트 변경이 필요하지 않습니다. 그게 가능하니? Apache 2.2 및 PHP 5.2를 사용하고 있습니다.

모든 경고는 일반적으로 내 개발 서버에 표시되지만, 헤더 리디렉션이 이어지면 볼 수 없습니다. 예 : 개발 서버에서

<?php 
error_reporting(E_ALL | E_STRICT); 
ini_set('display_errors', 'On'); 
unset($undef); 
echo $undef; // generates warning, should stop redirect. 
//exit; 
//when previous line is uncommented, I see the warning 
header("Location: http://www.google.com"); // still happens, but shouldn't 
exit; 
?> 
+0

그런 환경에서 내 제안은 크게 오류 로그에 의존하는 것입니다. –

답변

1

넣어 : 당신의 헤더 리디렉션 전에

error_reporting(E_ALL | E_STRICT); 
ini_set('display_errors', 'On'); 
ob_start(); 
... 

if(ob_get_length() > 0){ 
    ob_flush(); 
    exit(); 
} 
header(...); 

(그림 참조). 버퍼에 무엇이 있으면 표시되고, 브라우저로 렌더링 된 것이 있으면 헤더 리디렉션을 수행 할 수 없기 때문에 헤더 리디렉션이 실패하게됩니다. 프로덕션 서버에서 display_errorsOff으로 설정하면이 메시지가 표시되지 않습니다. 이 같은 수행

+0

나는 이것을 스크립트 상단에 놓았으며 경고가 생성 된 후에도 리디렉션이 발생합니다. header() 호출 전에 $ undefinedvariable을 echo하고 경고를 발생 시키지만 header()는 여전히 리다이렉트합니다. –

+0

질문에 문제가있는 코드를 게시하십시오. 경고가 생성되었다고 생각되면'header()'앞에'exit()'를 써서 이론을 확인하십시오. – afuzzyllama

+0

출구를두면; header() 전에 경고 메시지가 나타납니다. 이탈이없는 경우; 리디렉션은 경고가 표시되지 않은 것처럼 발생합니다. 그것이 보통 리디렉션 전에 나가기 전에 경고를 확인하는 방법입니다. header() 호출 바로 직전이지만 매번 변경하고 변경하기에는 너무 번거로운 작업입니다. –

0

:

//header("location: such-and-such"); 

롤,하지만 정말를; 그것보다 단순하지 않습니다.

관련 문제