2010-01-12 2 views
0

내가 (윈도우에 WAMP 실행) 로컬 호스트에 내 사이트를 구축, 나는 내 서버에 업로드 할 때, 난 항상 "헤더 정보를 수정할 수 없습니다 - 이미 전송 헤더" 을 얻을linux, cpanel에서 "header already sent"메시지를 비활성화하는 방법은 무엇입니까?

내가 그 존재가 안 이해를 빈 줄과 어리 석음이 있으면 대개이 문제가 해결됩니다. 하지만 이제 헤더가 전송 된 후 누군가를 리디렉션해야합니다. 어떻게하면 내 서버를 내 로컬 호스트처럼 작동시킬 수 있습니까?

난의 cPanel과 WHM 사용하고 있습니다 : - WHM 11.25.0 -

의 cPanel 11.25.0-R42399 내가 어떤 도움을 주셔서 감사합니다

VPS에 X 3.9 에 CentOS 5.4 x86_64에의 버추 오조를

답변

0

글쎄, 나는 HTML이 작성되기 전에 더 많은 생각과 더 나은 프로그래밍으로 모든 리디렉션을 관리 할 수 ​​있다고 생각합니다.

이전 규칙에 의해 해결이 문제 ... 한마디로

2

, 당신은 당신이 헤더() 함수를 사용하고자하는 지점에 도착하기 전에 브라우저에 아무것도 출력에서 ​​PHP를 방지 할 필요가있다.

빈 줄이없는 프로그래밍 연습이나 PHP 출력을 출력 버퍼에 저장하여 준비가되었을 때만 출력해야합니다.

ob_start()ob_flush() 방법을 참조하십시오. 응용 프로그램을 시작할 때 ob_start()를 사용합니다. 이렇게하면 출력이 비활성화되고 버퍼에 저장됩니다. 출력을 시작할 준비가되면 ob_flush()를 사용하면 PHP는 그 시점까지 설정된 헤더를 포함하여 버퍼 내용을 브라우저로 보냅니다. ob_flush()를 호출하지 않으면 스크립트의 끝에서 버퍼가 출력 (플러시)됩니다.

WAMP 개발 환경에서 작동하는 이유는 php.ini에서 기본적으로 출력 버퍼링이 이미 활성화되어 있기 때문일 수 있습니다. 종종 이러한 올인원 패키지는 처음 4K 바이트 정도의 기본 버퍼를 사용합니다. 그러나 코드에서 버퍼를 명시 적으로 시작하고 플러시하는 것이 일반적으로 더 나은 코딩 방법을 강요하기 때문에 일반적으로 더 좋습니다.

+0

ob_start는 헤더 만 버퍼링하지 않습니다. –

0

@ user31279 : 내가 아는 가장 빠르고 더러운 방법은 @을 사용하여 경고를 표시하는 것입니다 (예 :

@header('Location: some-other-page.php'); 
관련 문제