2009-04-13 6 views
0

Windows/IIS/PHP 웹 호스트에서 사용자 정의 404 오류 페이지를 구현하는 데 문제가 있습니다. 헤더에 404 상태 메시지를 보내려고 할 때마다 클라이언트에 내용이 전송되지 않고 빈 페이지가 대신 표시됩니다. 내 dev에 시스템에서PHP 404 오류 페이지에 내용이 표시되지 않습니다.

<?php 
    header('HTTP/1.1 404 Not Found'); 
    header('Status: 404 Not Found'); 
    var_dump(headers_list()); 
?> 

(브라우저에 표시) 출력 나의 호스트에서

array(2) { [0]=> string(23) "X-Powered-By: PHP/5.2.6" [1]=> string(21) "Status: 404 Not Found" } 

더 출력이없는 것입니다 :

여기 아주 간단한 내가 사용 스크립트입니다. 어떤 내용이 PHP에 의해 에코되는지 또는 아래에 일반 HTML로 포함되는지 여부에 관계없이 빈 페이지를 생성 할 수는 없습니다. 예를 들어 PHP 처리 중입니다. 로깅, 데이터베이스 쓰기 등은 정상적으로 계속됩니다.

누구든지 문제의 원인 또는 해결 방법을 제안 할 수 있습니까?

+0

Firefox와 IE에서 같은 결과가 나타 납니까? 그렇지 않은 경우 대답을 알 수 있습니다. – OneNerd

답변

2

CGI를 실행하기 위해 호스트에서 PHP를 구성한 경우 IIS에서 404 오류 페이지를 생성하는 것이 불가능할 수 있습니다 (잘못된 결과 인 200 OK를 거짓으로 반환하는 경우 제외). 확실히 나는 CGI 404 오류가 브라우저에 전달되도록 IIS 4-6.0을 설득 할 수 없었다.

당신은 일반적으로 PHP가 CGI를 실행하는 것을 원하지 않습니다. 다른 관련 문제는 물론 느려지기도합니다. IIS에서 PHP ISAPI 확장을 선호해야합니다 (시도하지는 않았지만이 특정 문제를 해결할 수는 없습니다).

2

PHP 태그 뒤에 텍스트를 넣으면 어떨까요?

또한 아파치 오류 로그를 확인하거나 스크립트에서 php -l을 실행하거나 error_reporting on 및 display_errors를 켜는 등 스크립트가 호스트에서 오류가 발생하지 않는지 확인하십시오.

+0

제안한대로 코드를 다음으로 변경했습니다. CONTENT 내 호스트에서 출력이 여전히 비어 있습니다. – Loftx

+0

죄송합니다. 너무 잘 표시되지 않았습니다. 또한 호스트가 출력용으로 서버 명령 행에서 스크립트를 실행했습니다 : array (0) {} 및 오류 없음. 비록 header()가 웹 서버를 통해 php가 호출 될 때 특히 유용하다고 생각합니다. – Loftx

+0

"CONTENT"출력이 – Matt

5

'빈 페이지'는 error_reporting (0)과 같은 냄새가 나면 사용자가 받게 될 오류 메시지가 숨겨집니다. 어쩌면 헤더 앞에 출력물이있어 오류가 발생할 수 있습니다. 그것을 확인하십시오.

+0

+1이 될 때까지 한 번에 한 줄씩 주석 처리를 시도해보십시오. 바보 같지만 여러 번 본 적이 있으며 처음 확인해야합니다. – Cruachan

0

호스트가 PHP를 사용하여 즉석에서 헤더를 변경할 수 있는지 확인하십시오. 내 호스트는 PHP를 통해 404 헤더를 설정할 수 없지만 다른 헤더 (301, content-type)는 괜찮습니다.

0

제 조언은 HTTP/1.1 404 헤더를 직접 설정하지 말고 웹 서버가 대신 해줍니다.

전통적으로이 작업은 웹 서버가 취해야하는 HTTP 헤더를 사용하여 수행해야하며 HTTP/1.0 또는 1.1 404 Not Found 헤더로 바뀝니다.

(사이드 참고 :. Status 헤더 실제 HTTP 헤더하지 않고 서버 자체에 대한 응용 프로그램에서 정보를 전달하는 데에만 사용됩니다)

1

나는 리눅스에서 PHP 5.2.6과 같은 문제가 있습니다. 첫 번째 8109 바이트는 웹 서버에서 인쇄하지 않습니다.

IE6은 512 바이트 길이의 사용자 지정 오류 페이지 <을 무시합니다. 이것은이 문제에 대한 설명이 될 수 있지만 어쨌든 하나 이상의 브라우저에서 테스트했을 것입니다.

관련 문제