복붙노트

PHP Headers already sent 오류

PHP

PHP Headers already sent 오류


PHP Headers already sent 오류는 어떤 결과를 쓴 다음에 http 헤더에 접근하려고 했다는 뜻입니다.

체크 포인트

1번째 줄

우선 PHP 파일의 1번째 줄이 로 시작하는지 확인해 보세요.
공백도 있어서는 안됩니다. 1번째 줄 첫번째 글자가 < 여야 합니다.

echo 나 print 문, 혹은 html 이 먼저 나왔나?

아마 아주 높은 확률로 여기에 해당하실 꺼에요.

일반적으로 PHP 페이지를 만들었을 때는 잘 되었는데, 다른 페이지로 리다이렉션 하려면 안되는 경우가 있었죠?

왜냐하면 redirection 은 header에 쓰여지는 구문이기 때문입니다.

header("Location: /user.php");  
exit();  

이런 구문이 무조건 ! 출력문보다 먼저 나와야 합니다.

이유

보통 http 프로토콜은 아래와 같은 형식으로 되어 있습니다.

HTTP/1.1 200 OK  
Powered-By: PHP/5.3.7  
Vary: Accept-Encoding  
Content-Type: text/html; charset=utf-8  

PHP Headers already sent 오류 샘플  

제목

뭔가 내용..

위에서 Content-Type 까지가 http 프로토콜의 헤더라고 부르고, 아래가 본문이지요.

PHP 에서 echo 나 print 등을 써서 출력을 하면 본문 에 출력이 쓰여집니다.
그런데 본문을 쓰고 나서 헤더를 쓰려고 하면 순서가 틀렸다고 오류를 뱉는 것입니다.
왜냐하면 PHP는 아주 정직한 언어거든요 :)


'PHP' 카테고리의 다른 글

PHP 에서 오류 메세지 보기  (0) 2017.11.13
PHP 타임존 설정  (0) 2017.11.13
PHP에서 날짜 및 시간 다루기  (0) 2017.11.12
PHP mysql_query 에서 false 를 반환할 경우  (0) 2017.11.11
PHP에서 SQL injection 방지하기  (0) 2017.11.11