2011-03-17 3 views
1

단위 테스트를 위해 PHP와 simpletest을 사용하고 있습니다.문제 테스트 Simpletest로

예기치 않은 PHP 오류 [수정할 수 없습니다 헤더 정보를 : 나는 예외가 이미 나는 다음과 같은 얻을 수 있도록 헤더 정보를 작성했습니다 simpletest 때문에 발생합니다

try{ 
    setcookie($name,$cookie,$cookie_expires); 
}catch Exception($e){ 
    blah 
} 

쿠키를 시도하고 설정할 때까지 내 시험은 잘 작동 - 이미가 보낸 헤더 심각도 [E_WARNING] [blah_code.php 라인 (280)]

내가이것을 잡기에 모호한 설명을 본 적이 (출력 /tests/simpletest/reporter.php:43에서 시작)하지만 더 이상 문서 나 예제가 작동하지 않습니다. 누군가가 실용적인 예를 제공하거나 문서를 가르쳐 줄 수 있습니까? 확실하게. 이것은 출력물을 생성하는 코드가 아니라 SimpleTest입니다.

답변

1

이 문제를 해결할 수있는 한 가지 방법은 출력 버퍼링을 사용하는 것입니다.

PHP 구성 (및 .htaccess)을 전역으로 설정하거나 ob_start() 및 관련 기능 (ob_get_clean(), ob_end_flush() 등)을 사용할 수 있습니다.

ob_start(); 
// your SimpleTest here. 
// your header/ cookie manipulation here. 

그리고 :

ob_end_clean(); // Stop buffering and dump everything (don't echo). 
ob_end_flush(); // Stop buffering and echo out the buffer. 
ob_get_clean(); // Stop buffering and return everything as a string. 

또는 기타 관련 기능의 예를 들어. 당신이하지 않으면 PHP는 ob_flush() 파일의 끝에 전화를 믿습니다.

+0

비슷한 문제가 있습니다 ... 파일의 처음 부분에 ob_start()를 추가해도 아무런 변화가 없습니다. –

1

전에 출력 할 때이 오류가 발생합니다 (header 기능) setcookie($name,$cookie,$cookie_expires);.

setcookie($name,$cookie,$cookie_expires);<?php 전에 echos 또는 html 또는 text 또는 아무것도 (조차 SPACE)가 없습니다 있는지 확인하십시오.

+0

내 코드가 아닌 출력을 만드는 것이 간단한 테스트입니다. 그래서 내가 여기서이 질문을 제기했다. – Jim

+0

@ 짐 미안하지만, 나는 당신의 질문에 대해 심각하게 오해하고 있습니다. –

+0

@Jim 나는 당신이 아무것도 출력하기 전에이'simpletest'을 사용했다고 생각합니다. –