2011-08-30 3 views
0

아래 코드를 사용하여 내 전자 메일에 오류를 보내고 있지만, 내 전자 메일을 확인할 때 변수에 아무 것도 포함되지 않은 이유를 모르겠습니다. 범위 오류입니까? 아니면 내가 잘못하고있는거야?ob_get_clean()이 함수 본문에서 작동하지 않는 이유는 무엇입니까?

ob_start(); 
set_error_handler('cs_handler', E_ALL); 

//a lot includes and method calls here 

function cs_handler($errno, $errstr, $errfile, $errline) 
{ 
    $content = ob_get(); 
    mail(...., 'Error Happend: '.$content); 
} 

답변

2

한 가지 문제는 여러 오류 페이지 당이 제대로 작동하려면, 버퍼를 세척 후에는 다시 ob_start()를 호출해야한다는 것입니다. 이것이 문제가 될 수 있습니까? 콘텐츠가 포함 된 이메일 하나를 받고 있습니까?

또 다른 문제는 3 (주소, 제목, 내용)을 예상 할 때 mail()에 2 개의 인수가 포함되어 있다는 것입니다. 당신은 아마 같은 것을 원한다 수행

ob_start(); 
set_error_handler('cs_handler', E_ALL); 

echo 'begun'; 

echo $arr['test']; // This throws a warning, handled by the function below 

function cs_handler($errno, $errstr, $errfile, $errline) 
{ 
    $content = ob_get_clean(); 
    mail('[email protected]', 'Error Happened', $content); 
} 
+0

난 그냥, 하나의 이메일을 얻으려면 하나를 얻을 것이다 없음하지만 빈 $의 콘텐츠 –

+0

없이 당신을 의미 :

mail('[email protected]', 'Error Happened', $content); 

주 예상대로 다음 작품 것을 마지막 오류 시점에서 스크립트의 모든 출력을 포함하는 하나의 전자 메일 또는 FIRST 오류 시점에서 스크립트의 출력을 포함하는 단일 전자 메일을 원하거나, 단 하나의 오류 만있을 것이라고 어떻게 든 보장 할 수 있습니다 이 대본에 의해 던져 지는가? –

+0

죄송합니다. 분명히해야합니다. 모든 오류와 내 이메일의 '$ content'를 원합니다. (그래서 내가 3 오류가있을 수 있습니다, 아무 문제가 $ 콘텐츠를 우편으로 3 번, 이것이 일시적인 오류 디버깅 일이 원인) –

관련 문제