그래서 테스트를 거친 코드를 배포했을 때 깜짝 놀랐습니다. 내 테스트 컴퓨터와 내 서버 사이에는 약간의 차이가 있어야합니다. 헤더 리다이렉트를 특징으로하는 똑같은 코드가 내 테스트 머신에서 완벽하게 작동했으며 서버에서는 전혀 작동하지 않았습니다. 서버의 리디렉션이 발생하지 않았으므로 빈 페이지가 결과로 남았습니다.PHP 헤더 ("Location : ...")는 하나의 컴퓨터에서 작동하며 다른 컴퓨터에서는 작동하지 않습니다.
헤더는 스크립트의 중간에서 어딘가에 호출되지만 아직 출력되지는 않습니다. 스크립트의 끝까지는 아무것도 출력하지 않습니다. 다른 모든 것이 실행 된 후에 오랫동안. 그것은 모든 것을 완충합니다.
서버와 테스트 컴퓨터 모두 동일한 Apache 버전 인 PhP 버전을 실행 중입니다. 구성 파일에 헤더가 하나가 아닌 다른 헤더가 될 수있는 것이 있습니까? 거기에 다른 일이 일어나서 실패 할 수 있습니까?
이 편집 :
여기 헤더 설정하는 라인이다 :
public function setRedirect($url) {
header('Location: '.$url);
}
을 그리고 여기에 호출하는 코드의 그 :
URL::toString()
항상 정규화 된 도메인 이름을 생성
$url = new URL('index');
$this->layout->setRedirect($url->toString());
, 이 경우 : http://domain/index.php?action=index
나는 PHP와 아파치 에러 로그를 모두 검사했다. 나다.
절대 (정규화 된) URL로 리디렉션합니까? –
완전성을 위해서 :'header()'호출이있는 행을 포함 할 수 있습니까? – Tomalak
@Peter Bailey @Tomalak 완료 (예)하고 완료. 편집을 참조하십시오. –