2012-11-30 3 views
0

PHP의 치명적인 오류 (AJAX 요청 처리 용)가있는 경우 HTTP 상태 헤더를 500으로 설정하는 방법을 알아 내려고했습니다.PHP에서 HTTP 상태 헤더가 치명적인 오류, 코드 제안

관련 질문 : 내 생각에 우아한 해결책이 아니라 register_shutdown_function을 사용하지 않으 How can I get php to return 500 upon encountering a fatal exception?

.

아래 코드는 좋은 해결책입니까?

치명적인 오류가 발생하더라도 항상 작동합니까?

echo 호출까지 응용 프로그램 코드에는 출력이없고 flush() 함수 (호출 후에는 헤더 수정을 막음)에 대한 호출이 없다고 가정합니다.

<?php 

set_status_code(500); 

// ... 
// (application code with no output) 

// Application didn't crash up to this point, 
// so we set http status code 200. 
set_status_code(200); 

echo $outputBuffer; 

은 원하는 동작을 중단시키는 유일한 기능입니까?

+0

... 왜 치명적인 오류가 발생합니까? –

+2

PHP (또는 PHP 웹 서버)가 자동으로 중단되면 Apache (또는 선택한 웹 서버)가 자동으로 500을 반환해야합니다. – deceze

+0

'성공'과 '메시지'변수를 '500'을 찾는 것보다는 자바 스크립트로 반환하는 스타일을 선호합니다. – MrCode

답변

0

PHP 오류를 끄면 치명적인 PHP 오류가 발생할 때마다 Apache에서 500 개의 상태 코드를 제공합니다.

+1

'

+0

@ JanŚwięcki 상태 코드를 어떻게 확인하고 있습니까? –

+2

FireBug, Fiddler2. Ok, 나는 이것을 이해했다. Xdebug가 문제였습니다 ([this] (http://codeblow.com/questions/steps-to-make-php-set-http-status-code-to-500-instantly-just/) 체크). 감사! :) –