<?
session_start();
echo "세션 시작";
?>

위의 php 코드에서 아래와 같은 에러가 발생할 때

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\APM_Setup\htdocs\kkk\vvv.php:1) in C:\APM_Setup\htdocs\kkk\vvv.php on line 3


원인은 session_start() 앞에 다른 명령어가 없어야 되는데 있을 때 발생한다.
그런데 위의 코드에서 다른 명령어가 없는데도 이런 에러 발생하는 경우가 있는데
그 이유는 이 파일을 저장할 때 utf-8로 저장을 하면 발생한다.
이유는 utf-8의 경우는 문서를 저장할 때 문서 맨 앞에 특정한 3byte를 집어 넣는다.
이유는 utf-8임을 구별하기 위해서 이다.

따라서 이 문제가 발생하지 않을려면 방법은 두 가지

① ANSI로 저장하면 된다. 그런데 이건 웹 브라우저를 셋팅할 때 euc-kr로 설정되어 있으면 문제가 없지만 utf-8로 설정되어 있으면 ANSI로 저장한 상태에서 한 글을 사용하면 웹브라우저에서 한글이 깨지는 문제가 발생한다. 왜냐하면 ANSI는 한글을 euc-kr 형태로 표현하기 때문이다.


② utf-8로 저장하되 BOM 없음으로 저장하면 된다.
utf-8을 BOM 없음으로 저장할려면 윈도우 메모장에서는 안된다. 
Notepad++ 과 같은 것으로는 가능하다.


그런데 또 문제는 utf-8 BOM 없음으로 저장하면 한글이 깨지는 경우가 발생한다.
이 문제를 해결할려면 다음 코드를 넣으면 된다. 니하하하~~~

header("Content-Type:text/html; charset=utf-8"); ==> 이 코드를 넣어 주면 한글 깨지는 문제를 해결 할 수 있다.
혹시 euc-kr일 경우는 utf-8 대신에 euc-kr을 넣어 주면 된다.
아래 샘플 코드이다.


<?php

session_start();

header("Content-Type:text/html; charset=utf-8");

echo ("세션이 시작되었습니다. UTF-8 BOM 없음 입니다.");

?>


+ Recent posts