여기는 저의 2004~2007년까지의 기록입니다. 이 블로그는 이제 Tistory로 옮겼습니다.
2008년부터의 기록은 http://blog.studioego.info 로 가시기 바랍니다.

StudioEgo's Thoughts, seasonⅡ


PHP에서 세션 오류가 날때 - 1편
가끔 PHP로 코딩을 하다보면 세션을 만질 때가 있습니다.

가끔가다가 세션 관련 부분이 문제를 일으킬때가 엄청 많습니다.
전 여기서 여러가지 경우 중에서 한가지 경우를 설명하겠습니다.

갑자기 이런 문제가 나타나는 경우
Warning: session_start(): open(/home3/plus/public_html/php/session/sess_fd54d01bcd294d722c8cab518af9ba81, O_RDWR) failed: No such file or directory (2) in /home2/plus/public_html/php/three/Hresult_0.php on line 3

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home2/plus/public_html/php/three/Hresult_0.php:3) in /home2/plus/public_html/php/three/Hresult_0.php on line 3

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home2/plus/public_html/php/three/Hresult_0.php:3) in /home2/plus/public_html/php/three/Hresult_0.php on line 3


이 문제는 PHP자체의 버그라고 할까요?

네이버 지식인을 찾아보면 답은 간단합니다.
아래는 네이버 지식인에 나온 답입니다.


원인은.. 바로 headers already sent 입니다..

<?
session_start();
?>


함수가 나타나기 이전에 .. 브라우저에 어떠한 출력도 있어서는 안됩니다.

간단하게 예를 들면

<?
echo "warning sample";
session_start();
?>

위의 소스는 에러가 발생 합니다.

이유는 session_start(); 가 실행되기 이전에 부라우저에 "warning sample" 라는 내용을 출력했기 때문 입니다...

올바른 소스는..

<?
session_start();
echo "session_start(); sample";
?>
위의 소스 처럼 session_start(); 함수가 호출되기 이전에 어떠한 내용도 부라우저에 출력되지 않았으므로 경고 메세지를 표시하지 않습니다.

관련된 함수로는
header();
등이 있겠네요.
by Ego君 | 2006/08/02 03:04 | 리눅스 | 트랙백 | 덧글(4)
트랙백 주소 : http://sungdh86.egloos.com/tb/2602779
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by Ego君 at 2006/08/02 03:30
<? 이 안되군요...... XHTML에서 < 은 &lt; 라네요. <표시 안되시는 분 참고.
Commented by 잘못된연산 at 2006/08/02 18:40
그때는 ob_start(); 를 해주면 되지 않나요?
버퍼를 사용하면 세션을 꼭 앞에 써야 된다는 압박에서
좀 자유로울 수 있던데..
Commented by 정태영 at 2006/08/03 11:21
버그라고 할 수 없습니다. HTTP 자체가 저렇게 생겨먹어서 어쩔 수 없는 부분입니다 ;)

session 은 cookie 기반이고 cookie 는 header 를 통해 값을 넘겨주기 때문에 그러는 겁니다. 그리고 HTTP 프로토콜 자체가 request -> send header -> data 식이기 때문에 data 가 출력된 후에는 header 에 어떤 값을 출력하는 기능을 하던 것들은 다 저런 에러를 낼 수 밖에 없는거죠...
Commented by 정태영 at 2006/08/03 11:24
아 그나저나 네이버 지식인에서 저런 것들을 찾아보는 건 절대 추천하고 싶지 않습니다...

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >