2013-01-20 5 views
-1

PHP 리디렉션을 위해 여러 조합을 시도했지만 불행히도 성공하지 못했습니다.PHP 헤더가 문 안에서 리디렉션됩니다.

Headers already sent by php

는 이미 위의 깊이있는 대답을 검토 한 결과,하지만 난 정말 자바 스크립트는 아니고 HTML을 재 사용하지 않습니다. 내가위한 ob_start/끝과 헤더 후 종료 기능이없는 그것을 시도했습니다

} else { 
     ob_start(); 
    // 'Sorry, page cannot be found!'; 
    exit(header('Location: /404.html', true, 302)); 
    ob_end_flush(); 
} 

,하지만 성공 :

내가 지금까지 가지고있는 코드입니다.

내가지고있어 오류 메시지는 다음과 같습니다

PHP 경고 : 헤더 정보를 수정할 수 없습니다 - 헤더가 이미 라인 (22)

에 /index.php에 (출력 /header.php:68에서 시작)에 의해 전송

라인 (22)은 다음과 같습니다 exit(header('Location: /404.html', true, 302));

+1

어떤 오류가 발생하고 정확히 어떤 행이 가리키고 있습니까? –

+0

안녕 Pekka, 위의 참조하십시오, 나는 오류 코드를 포함하는 질문을 수정했습니다. – Ben

답변

1

시도하십시오이 하나 : 당신이 종료 한 내부 헤더 함수를 작성 이유

} else { 
    ob_start(); 
// 'Sorry, page cannot be found!'; 
header("Location: 404.html"); 
exit; 
ob_end_flush(); 
} 

나도 몰라

0

PHP 스크립트가 이미 콘텐츠를 보낸 경우 언급 된 경고가 표시됩니다. 이 스크립트는 echo에서 <?php 전에 공백이나 개행 문자까지 사용할 수 있습니다. 전체 코드를 보지 않고서는 정확히 무엇이 원인인지 말할 수 없습니다.

편집 : 게시 한 오류 메시지에 따르면 출력은 파일 header.php의 68 행에서 시작되었습니다. 그래서이 라인이 무엇을 출력 하는지를 체크하고 변수에 캐쉬하거나 ob_start()을 호출하기 전에이 실행됩니다 (나중에 ob_start()을 호출하면 생성 된 출력 만 캐싱됩니다. 이전에 출력 된 것이 모두 이미 있습니다). 보낸).

관련 문제