728x90
반응형
✅ PHP에서 session_start() 에러 해결법 — headers already sent by 문제
PHP에서 세션을 시작하려고 session_start()
를 넣었는데, 이런 에러가 뜬 적 있나요?
Warning: session_start(): Cannot send session cache limiter - headers already sent by (output started at /index.php:1)
처음 보면 헷갈릴 수 있는 이 에러,
사실은 아주 단순한 원리 때문에 발생합니다.
🧨 왜 이런 에러가 날까?
session_start()
는 내부적으로 헤더(header)를 사용합니다.
PHP에서는 출력이 시작된 이후에는 헤더 관련 처리를 할 수 없어요.
즉, session_start() 이전에 출력이 있었다면 이 에러가 발생하게 됩니다.
❗ 이런 경우에 에러가 납니다
1. PHP 시작 태그 전에 공백/빈 줄이 있는 경우
[공백]
<?php
session_start(); // ❌ 에러 발생
2. session_start() 전에 echo가 있는 경우
<?php
echo "로그인 페이지입니다."; // ❌ 출력 발생
session_start(); // 에러
3. include한 파일에 출력 코드가 있는 경우
// config.php
<?php
echo "설정 로드 완료"; // ❌
<?php
include 'config.php';
session_start(); // 에러 발생!
🛠 해결 방법
출력 전에 session_start()를 먼저 실행해야 합니다.
예시 (정상 작동)
<?php
session_start();
echo "안녕하세요!";
✅ 해결 체크리스트
-
<?php
태그 전에 빈 줄, 공백 없음 - session_start() 전에
echo
,print
,var_dump()
등 출력 없음 - include/require 파일 내부에 출력 코드 없음
- 파일 인코딩이 UTF-8 (BOM 없음) 으로 저장되어 있음
※ 특히 UTF-8 with BOM은 눈에 안 보이게 출력이 발생해서 에러가 납니다.
🔧 VSCode에서는 우측 하단 [UTF-8 with BOM] → 클릭 → UTF-8 로 변경 가능!
✏️ 정리
session_start()
는 출력 전에만 사용 가능- 출력이 먼저 되면 header 관련 함수는 모두 막힘
- 항상 코드 최상단에서 session_start()를 시작하는 습관!
다음 글에서는 include 경로 문제로 인한 Failed opening required
에러를 다룰 예정입니다.
좋아요 👍 / 댓글 💬 / 구독 💻 은 개발자에게 큰 힘이 됩니다!
728x90
반응형
'PHP > PHP 에러 해결 모음' 카테고리의 다른 글
PHP Undefined Index / Variable 에러 원인과 해결 방법 (0) | 2025.04.09 |
---|---|
PHP include 에러 해결법 - Failed to open stream 원인과 해결 방법 (0) | 2025.04.08 |
PHP 실행 시간 초과 에러 (Maximum execution time) 원인과 해결 방법 (0) | 2025.04.08 |
PHP Call to undefined function 에러 원인과 해결 방법 총정리 (0) | 2025.04.08 |
PHP에서 ‘headers already sent’ 에러가 나는 이유와 해결 방법 (0) | 2025.04.08 |