728x90
반응형
✅ PHP에서 'headers already sent' 에러가 나는 이유와 해결 방법
웹 개발 중 아래와 같은 에러 메시지를 본 적 있으신가요?
Warning: Cannot modify header information - headers already sent by...
처음 보면 "대체 뭘 보냈다는 거지?" 싶은데요 😵
이번 글에서는 이 에러의 원인과 해결 방법을 정리해보겠습니다.
🔍 에러 메시지 예시
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/index.php:1) in /var/www/html/index.php on line 10
🧨 에러의 핵심 원인
PHP는 header()
함수 등을 사용할 때, 출력이 발생하기 전이어야 정상적으로 동작합니다.
이미 HTML, echo
, print
등으로 출력이 발생하면 그 이후에는 header를 보낼 수 없게 됩니다.
예시:
<?php
echo "Hello World!";
header("Location: /login.php");
위 코드처럼 출력(echo
)이 먼저 발생하면 에러가 발생합니다.
⚠️ 자주 하는 실수 TOP 3
- 파일 맨 앞에 공백/빈 줄이 있는 경우
// ❌ 이런 코드 [공백] <?php header("Location: login.php");
- include 또는 require한 파일에 출력이 있는 경우
// config.php <?php echo "설정 파일 불러오기"; // ❌ require 'config.php'; header("Location: dashboard.php"); // 여기서 에러!
- UTF-8 with BOM 인코딩 문제파일이
UTF-8 with BOM
형식이면, PHP는 BOM(Byte Order Mark)을 출력으로 인식합니다. - ✅ 해결: UTF-8 (BOM 없음) 으로 저장
(VSCode, Sublime Text 등에서 인코딩 변경 가능)
✅ 올바른 사용 예시
<?php
header("Location: login.php");
exit;
exit;
를 통해 이후 코드 실행을 막는 것이 안전합니다.
🛠 에러 해결 체크리스트 ✅
- ☑️
<?php
전에 공백/줄 없음 - ☑️ 인코딩이 UTF-8 (No BOM)
- ☑️
echo
,print
,var_dump
등이 header 이전에 없음 - ☑️ include된 파일에서 출력이 발생하지 않음
✏️ 마무리
'headers already sent' 에러는 사소한 실수로 자주 발생하지만,
원리만 이해하면 금방 해결할 수 있습니다.
👉 항상 header
관련 코드는 출력 전에!
👉 exit;
까지 깔끔하게 써주는 습관까지!
앞으로도 자주 겪는 PHP 에러와 실무 팁을 공유할 예정입니다.
좋아요, 댓글, 구독은 개발자의 힘이 됩니다 💪
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 |
session_start() 에러 - headers already sent 원인과 해결법 (PHP 에러 해결 모음) (0) | 2025.04.08 |