2014-11-25 5 views
4

저는 오랫동안 PHP를 사용 해왔고 어떤 이유로 새로운 서버로 마이그레이션하여 화이트 스크린을 발생 시켰습니다. 버전 차이 때문에 분명히 있어야합니다. 나는 수년간 동일한 출력 버퍼 패턴을 사용 해왔다. 일반적으로PHP 출력 버퍼 흰색 화면 및 오류 없음 반환 방법

... (I HTML 섹션을 반환 및 뷰 사이에 주위를 통과하면서

ob_start(); 
?> 
    //HTML... 
<?php 
$output = ob_get_clean(); 
ob_flush(); 

return $output; 

는 최근에 나는 (내가 생각하는 내 WAMP에 5.4+) PHP의 내 일반/최신 버전에서 몇 가지 문제를 발견했다 MVC 사용). 그들은 완전히 화면에 표시되었고 버퍼에 전혀 저장되지 않았습니다. 버퍼가 제거 될 수 있음을 알리려면 필요한 플래그를 내 ob_start()에 필요로한다는 것을 알았습니다. 그래서 ob_start(null, 0, PHP_OUTPUT_HANDLER_REMOVABLE); 그러나 지금 내 페이지가 라이브가 아닌 전체 페이지가 지금 중단하고 전체 whitescreen을 보여줍니다 WAMP에 있는지

처럼

. 나는 모든 오류보고를 켜놓고 아무것도하지 않았다. 로그에 나타나지 않는 항목 등. echo "test"; die;의 큰 시리즈를 작성하여 어떤 라인에서 깨고 있는지 확인하고 뷰 사이에서 완료된 HTML 블록을 전달한 버퍼링 된 섹션을 제거 할 때 모두 정상적으로 작동하는지 확인하십시오.

제 섹션을 올바르게 반환하는 방법을 알아야합니다.

+1

이 (가) display_error이고, error_reporting (E_ALL)이 있습니까? ?? –

+1

ob_flush()가 필요하지 않습니다. 여기서는 ob_get_clean(); 출력 버퍼를 닫습니다 ... –

+0

오 세상에 @ 폴 노먼 .... 덕분에 당신이 알고있는 것보다 더 감사드립니다. 이것은 "오래된 개 새 트릭을 가르치는"실수였습니다. 오랫동안 버퍼를 닫고 ob_get_contents와 ob_end_clean을 호출한다는 것을 알고있었습니다. 그러나 몇 년 전 나는 get_clean과 flush를 모두 호출해야하는 오류가 발생했습니다. – GoreDefex

답변

1

ob_get_clean()이 이미 출력 버퍼를 닫았 기 때문에이 상황에서는 ob_flush()가 필요하지 않습니다.