wilson's story

Cannot modify header information - headers already sent by 본문

PHP

Cannot modify header information - headers already sent by

wilson 2008. 6. 20. 16:00
반응형

Warning: Cannot modify header information - headers already sent by (output started at /home/test/public_html/test/skin/member/eng/login_check.skin.php:18) in /home/test/public_html/test/lib/common.lib.php on line 109


오류의 원인은 다른분들의 답변이 맞습니다.

header() 함수를 사용하기 전에 그 어떤 출력(공백/엔터/HTML등)도 선행되어서는 안됩니다.


그러나, 사정상 조건/분기등에 의해 (물론 피할 수 있게끔 코딩하는게 최선이지만) 뒤늦은 header() 를 사용해야 할 수가 있는데요.

이럴때는 PHP4 이상의 output buffering 기능을 사용하실 수 있습니다.


소스 코드의 최상단에 (HTML 및 그 어떤 출력도 나오기 전) 다음과 같은 소스를 삽입하세요.


ob_start();


HTML이나 기타 출력되는 값을 메모리에 저장해 두었다가 프로그램 종료시 한꺼번에 내보내는 명령입니다.

이 펑션이 호출된 이후에 header() 를 만나면 어떤 HTML 출력과도 관계 없이 정상 실행합니다.


단, 기존의 게시판이나 기타 프로그램을 수정하고 계시며, 해당 프로그램에서도 ob_start()를 중복 사용하고 있다면, 해당 프로그램에서의 ob_start() 사용 용도에 따라 HTML출력에 또다른 문제가 발생할 수 있습니다(일반적인 경우 문제 없습니다)


반응형