<?
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 없음 입니다.");
?>
'PHP' 카테고리의 다른 글
PHP로 XML 생성 방법 및 생성시 주의 사항 (0) | 2020.02.07 |
---|---|
웹 페이지에서 테이블(table)의 짝수 행의 색상을 다른 색으로 표시하기 (0) | 2018.06.19 |
PHP에서 strtotime 함수와 date 함수를 이용한 타임스탬프 변환하기 (0) | 2018.06.19 |
PHP에서 2차원 배열의 내용을 출력하는 편리한 방법 (0) | 2016.04.01 |
안드로이드에서 JSON으로 보낸 데이터를 PHP에서 수신하기 (0) | 2015.11.02 |