PHP/PHP 에러 해결 모음

PHP Header 에러 해결법 - Cannot modify header information 경고의 원인과 대처법

backend.log 2025. 4. 9. 10:30
728x90
반응형

📌 PHP Header 에러 해결법 - Cannot modify header information 경고의 원인과 대처법

PHP에서 header() 함수나 setcookie() 등을 사용할 때 다음과 같은 에러 메시지를 본 적 있으신가요?

Warning: Cannot modify header information - headers already sent by (output started at /경로/파일.php:1) in /경로/파일.php on line 10

이 에러는 HTTP 헤더가 이미 전송된 이후에 다시 header()를 호출하려 했을 때 발생합니다.


🧨 원인

PHP는 HTTP 헤더 정보를 스크립트 실행 시 가장 먼저 브라우저에 전송합니다.
그런데 header()를 호출하기 전에 어떤 출력(HTML, echo, 공백 등)이 이미 있었다면 헤더는 이미 전송되었다고 판단하고 위와 같은 경고를 띄웁니다.

주요 원인 예시:

  • PHP 파일 앞에 <?php 전에 공백이나 줄바꿈이 있음
  • echoprint로 출력한 이후 header() 사용
  • include된 파일에서 출력 발생

🛠 해결 방법

1. 출력보다 먼저 header() 호출

<?php
  header('Location: login.php');
  exit;
?>

2. 파일 맨 앞에 공백 제거

PHP 시작 태그 <?php 이전에 절대 아무 문자나 공백도 있으면 안 됩니다.

<?php
// 이렇게 바로 시작
header('Location: home.php');
exit;

3. ob_start() 사용

출력을 버퍼링하여 헤더 전송을 지연시키는 방법입니다:

<?php
  ob_start(); // 버퍼 시작

  echo "출력 내용"; // 이 출력은 브라우저에 즉시 보내지 않음

  header('Location: dashboard.php');
  ob_end_flush(); // 출력 전송
?>

4. 디버깅: 출력 위치 확인

에러 메시지의 (output started at ...) 부분을 보고, 정확히 어디서 출력이 시작됐는지 확인하세요.


✅ 정리

문제 원인 해결책
Cannot modify header 이미 출력된 후 header() 호출 출력 전에 header() 호출 / ob_start 사용

📚 관련 글

🧩 PHP 에러 시리즈 전체 보기


태그: #PHP, #header에러, #phpheader, #헤더출력문제, #CannotModifyHeader, #웹개발팁, #php트러블슈팅, #출력버퍼링, #ob_start, #백엔드개발

728x90
반응형