오류해결 | Warning Cannot modify header information 오류해결 | |||||
---|---|---|---|---|---|
작성자 | 작성일 | 18-03-09 13:58 | |||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/bbs/_head.php:2) in /home/public_html/bbs/download.php on line 23 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 위와 같은 문제는, 모듈별 interactive session을 사용하지 않고 설계한 제로보드 등의 프로그램들의 고질적 문제입니다. php 또한 워낙에 open binary 정책을 쓰고 있어서 프로그래머들의 정돈된 계획에 많은 오류를 주곤하죠.. 자~ 해결해봅시다.. 항상 [warning] 속에 답이 있답니다. 이미 Header를 보냈기 때문에 정보를 수정/관여 할수 없다고 하네요.. 이 논리적 오류는 header 함수가 호출되기 전 해당 client에 space가 열려있기 때문에 발생하는 오류입니다. space는 공백/코드/이미지 등등이 해당될 수 있으므로.. header() 함수를 소스코드 상단에 위치 시키면 해결 가능합니다. 하지만 각 리턴값들이 상이한데 그렇게 하기는 쉽지 않죠.. 제가 확인해본 결과 가장 좋은 방법은 아래와 같습니다. header() 함수 사용 소스 최상단에 아래와 같은 코드를 삽입니다. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <? ob_start(); //삽입할 코드 .................................. ......................................................... +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ PHP4 의 output buffering 기능을 사용할 수 있습니다. ob_start(); HTML이나 기타 출력되는 값을 메모리에 저장해 두었다가 프로그램 종료시 한꺼번에 내보내는 명령입니다. 이 펑션이 호출된 이후에 header() 를 만나면 어떤 HTML 출력과도 관계 없이 순차적으로 실행합니다. 단, ob_start()를 중복 사용하고 있다면 HTML출력에 또다른 문제가 발생할 수 있습니다
|
|||||
|
댓글목록
등록된 댓글이 없습니다.