HTTP 헤더 및 HTTP 헤더 필드 이해

HTTP 헤더 HTTP 트랜잭션 전송에 필요한 필수 정보 제공 http 프로토콜.

일반 HTTP 헤더 형식은 헤더 필드에 콜론으로 구분된 이름-값 쌍을 포함합니다. 각 이름-값 쌍은 캐리지 리턴(CR) 및 줄 바꿈(LF) 문자 시퀀스로 끝납니다. 각 헤더 끝에 있는 빈 필드는 헤더의 끝을 나타냅니다.

애플리케이션 다음에 오는 공통 헤더 형식은 다음과 같습니다.

HTTP 헤더 유형

HTTP 메시지 헤더에는 네 가지 유형이 있습니다. 그들은:

  • 일반 헤더
  • 요청 헤더
  • 응답 헤더
  • 엔티티 헤더

일반 헤더

일반 헤더 필드는 요청 및 응답 메시지에 공통적으로 적용할 수 있습니다. 헤더 필드는 전송된 메시지에만 적용되며 전송된 엔터티에는 적용되지 않습니다.

일반 헤더의 구조는 다음과 같습니다.

캐시 제어필드는 요청 및 응답 시스템의 모든 캐싱 메커니즘이 따라야 하는 지시문을 지정합니다.

연결필드를 사용하면 발신자가 연결에 필요한 옵션을 지정할 수 있습니다. 연결 헤더 가지고있다다음 형식:

날짜필드는 메시지를 시작하는 동안 날짜와 시간을 나타냅니다. HTTP에 지정된 날짜 형식은 다음과 같습니다.

실용주의필드는 요청 및 응답 시스템의 모든 수신자에게 적용 가능한 구현별 지시문을 포함하는 데 도움이 됩니다.

트레일러필드 값은 메시지 트레일러의 헤더 필드 세트가 청크 전송 코딩으로 인코딩되는지 여부를 지정합니다.

인코딩 전송필드는 모든 유형의 변환이 메시지 본문에 적용되는지 여부를 나타냅니다.

업그레이드필드를 사용하면 클라이언트가 지원되는 추가 통신 프로토콜을 지정할 수 있습니다. 또한 서버가 추가 프로토콜을 사용하여 프로토콜을 전환할 수 있습니다.

을 통해필드는 중간 프로토콜을 나타내는 프록시 및 게이트웨이에서 사용하는 필수 필드입니다. 또한 사용자-에이전트와 서버 간의 요청 수신자와 서버와 클라이언트 간의 응답을 나타냅니다.

경고필드는 메시지에 반영되지 않은 메시지 상태 및 메시지 변환에 대한 추가 정보를 전달합니다.

경고 헤더는 일반적으로 응답과 함께 전송됩니다.

요청 헤더 필드를 통해 클라이언트는 요청 정보와 클라이언트 정보를 서버에 추가로 전달할 수 있습니다.

요청 헤더의 구조는 다음과 같습니다.

동의하기필드는 응답에 허용되는 미디어 유형을 지정합니다.

"*"는 범위의 미디어 유형을 그룹화하는 데 사용됩니다.

"*/*"는 모든 미디어 유형을 나타냅니다.

"type/*"은 유형의 모든 하위 유형을 나타냅니다.

문자 집합 수락필드는 응답 가능한 문자 집합을 나타냅니다. 클라이언트가 특수 목적의 문자 집합을 이해할 수 있도록 하여 서버에 이러한 문자 집합으로 문서를 나타내도록 신호를 보냅니다.

인코딩 수락필드는 Accept와 유사하며 응답이 허용되는 콘텐츠 코딩을 제한합니다.

허용 언어필드는 Accept와 유사하며 선호하는 자연어 집합을 제한합니다.

권한 부여필드는 서버에 자신을 인증하려는 사용자 에이전트를 위한 것입니다.

예상하다필드는 클라이언트에 필요한 서버 동작을 나타냅니다.

에서필드는 요청하는 사용자 에이전트를 제어하는 ​​사용자의 이메일 주소를 포함합니다.

주최자필드는 사용자 URI에서 인터넷 호스트 및 요청된 리소스 포트 번호를 지정합니다.

일치하는 경우필드는 조건부 메서드를 만드는 데 사용됩니다.

If-Modified-Since필드는 조건부 메서드를 만드는 데 사용됩니다. 요청된 변형이 지정된 시간 내에 수정되지 않으면 서버에서 엔터티가 반환되지 않습니다.

일치하지 않는 경우필드를 사용하면 트랜잭션 오버헤드를 최소화하면서 캐시 정보를 효율적으로 업데이트할 수 있습니다.

범위인 경우필드를 사용하면 클라이언트가 누락된 엔터티의 일부를 받을 수 있습니다. 그렇지 않으면 클라이언트가 전체 새 엔터티를 보내도록 요청할 수 있습니다.

If-Unmodified-Since필드는 이 필드에 지정된 시간 이후 수정되지 않은 경우 서버가 요청된 작업을 수행할 수 있도록 합니다.

최대 전달필드는 요청 전달 프록시 또는 게이트웨이를 제한하기 위해 TRACE 및 OPTIONS 메서드가 있는 메커니즘을 제공합니다.

프록시 인증필드를 사용하면 클라이언트가 프록시를 보호하기 위해 식별할 수 있습니다.

범위필드는 바이트 시퀀스로 표시되는 HTTP 메시지의 HTTP 엔터티를 지정합니다. HTTP 검색 요청은 GET 메소드를 사용하여 엔티티의 하나 이상의 하위 범위를 요청합니다.

추천인필드는 클라이언트가 Request-URI가 발견된 리소스의 주소 URI를 지정할 수 있도록 합니다.

필드는 응답에서 수락할 수 있는 확장 전송 코딩을 나타냅니다. 또한 청크 전송 코딩에서 트레일러 필드를 허용할지 여부를 나타냅니다.

사용자 에이전트필드는 요청하는 사용자 에이전트에 대한 정보를 포함합니다.

HTTP 응답 헤더

응답 헤더 필드를 사용하면 서버가 간단한 상태 표시줄 응답 이외의 응답을 통해 추가 정보를 전달할 수 있습니다.

응답 헤더의 구조는 다음과 같습니다.

범위 수락필드를 사용하면 서버가 리소스 범위 요청의 수락을 나타낼 수 있습니다.

나이필드는 서버가 응답한 이후 보낸 대략적인 시간을 나타냅니다.

ETag필드는 요청에 대한 엔티티 태그의 현재 값을 제공합니다.

위치필드는 수신자를 Request-URI 이외의 위치로 리디렉션하여 새 리소스 식별을 완료합니다.

프록시 인증필드는 프록시 인증 응답을 위한 필수 포함입니다.

재시도 후필드는 서비스를 사용할 수 없을 때 클라이언트가 서비스를 사용할 수 없는 상태로 유지되는 기간을 나타내기 위해 응답으로 사용됩니다.

섬기는 사람필드는 요청을 처리하기 위해 서버에서 사용하는 소프트웨어에 대한 정보를 포함합니다.

달라지다필드는 캐시가 응답의 재검증 없이 요청 응답을 사용할 수 있는지 여부를 결정하는 요청 필드를 나타냅니다.

WWW-인증응답 메시지가 승인되지 않은 경우 필드가 사용됩니다.

엔터티 헤더 필드는 엔터티 본문 또는 요청된 리소스에 대한 메타정보를 정의합니다. 엔티티 헤더 형식은 다음과 같습니다.

허용하다필드는 Request-URI 식별 자원이 지원하는 메소드 세트를 나열합니다.

콘텐츠 인코딩필드는 미디어 유형 수정자로 사용됩니다.

콘텐츠 언어필드는 엔터티의 클라이언트에 대한 자연어를 설명합니다.

콘텐츠 길이필드는 십진수로 표현되는 엔티티의 크기를 나타냅니다.

콘텐츠 위치필드는 Requested-URI 이외의 위치에서 액세스할 수 있는 경우 엔터티에 대한 리소스 위치를 제공합니다.

콘텐츠-MD5필드는 엔터티 본문에서 MD5 다이제스트를 사용하여 메시지 무결성 검사(MIC)를 제공합니다.

콘텐츠 범위필드는 전체 엔티티 본문의 부분 본문을 적용해야 하는 위치를 지정합니다.

컨텐츠 타입필드는 엔티티 본문의 미디어 유형이 수신자에게 전송되는지 또는 GET 메소드가 요청을 전송하는 데 사용되는지를 나타냅니다.

만료필드는 응답이 부실해지는 날짜/시간을 제공합니다.

마지막 수정필드는 변형의 마지막 수정 날짜와 시간을 나타냅니다.

필드 이름이 수신될 때 헤더에 나타나는 순서는 중요하지 않습니다. 일반적으로 일반 헤더가 먼저 배치되고 그 뒤에 엔터티 헤더가 있는 요청 또는 응답 헤더가 옵니다.

저작권 고지: 사이트의 사전 서면 허가 없이 이 기사를 복사하거나 번역하지 마십시오.

HTTP 디버거는 모든 브라우저 또는 데스크탑 애플리케이션에서 HTTP 헤더, 쿠키, POST 매개변수, HTTP 콘텐츠 및 CORS 헤더를 캡처하고 분석하는 기능을 제공하는 개발자용 프록시 없는 HTTP 분석기입니다. 멋진 UI와 사용하기 매우 쉽습니다. 프록시가 아니라 네트워크 문제가 없습니다!

한 번은 내 블로그에 갔을 때 다음과 같은 이해할 수 없는 오류를 발견하고 놀랐습니다.

경고: 헤더 정보를 수정할 수 없습니다 - 헤더가 이미 전송되었습니다(출력은 /xxxxxxxx/wp-config.php:1에서 시작됨).

그리고 관리자에게 접근할 수 있는 방법이 없습니다. 나는 즉시 wp-config.php 파일에 무엇이 잘못되었는지 확인하러 갔다. 모든 것이 제자리에 있었고 데이터베이스 암호가 정확했습니다. 또 해킹당한 줄 알았음)) 그런데 FTP에서는 기물 파손의 흔적이 전혀 없었다. 가장 이상한 점(결국 나를 완전히 혼란스럽게 함)은 www가 없는 사이트에 대한 링크만 작동하지 않거나 그 반대의 경우도 마찬가지라는 것입니다(정확히 기억나지 않음). 나는 호스트를 노크하기 시작했고 도메인 관리자 패널의 설정을 살펴보았습니다. 일반적으로 많은 것들이 있습니다.

그러나 그것은 훨씬 더 쉬운 것으로 판명되었습니다. 구성 파일의 시작 부분에 BOM이 있었습니다.— UTF-8 파일의 마커(서명). 그래서 위의 오류가 발생했습니다. 이런 일이 발생하지 않도록 하려면 우선 이 서명을 전혀 넣지 않거나 파일을 저장하기 전에 서명이 필요한지 여부를 지정하는 코드 편집기를 사용해야 합니다.

일부에서는 텍스트 편집기설정에서 "유니코드 서명(BOM) 포함", "바이트 순서 표시 추가" 또는 유사한 확인란을 찾을 수 있습니다. 그렇지 않으면 특정 프로그램에서 불필요한 옵션을 비활성화할 수 없으면 사용하지 않는 것이 좋습니다. 전문 포럼에서 좋은 텍스트 편집기 목록을 찾을 수 있습니다. 메모장2, PSPad, UniEdit, 메모장++. 상당히 강력한 도구인 후자에 대해 많이 기록되어 있습니다. 어떻게든 무작위로 내 컴퓨터에서 사용할 수 있는 대체 편집기가 있었습니다. 아켈파드- 비슷한 작업에 사용합니다.

여기에 또 다른 요점이 있습니다. BOM 오류는 wp-config.php 파일에만 있는 것이 아닙니다. 또한 경고 표시 옵션을 비활성화하면 문제가 발생한 위치를 전혀 볼 수 없습니다. 이러한 경우(및 기타 모든 경우)에는 간단한 BOM으로 파일을 찾는 스크립트. Yury Belotitsky는 개발에 감사해야 합니다.

스크립트를 사용하는 것은 매우 간단합니다.

  1. 원하는 파일
  2. 부어 FTP 서버루트 디렉토리로. WordPress가 사이트의 루트에 설치되지 않은 경우(예를 들어 블로그 폴더에) 스크립트는 WordPress가 있는 디렉토리에 배치되고 여기에서 실행되어야 합니다.
  3. 실행은 매우 간단합니다. 브라우저의 주소 표시줄에 http://your.site/find_bom.php 링크를 입력하십시오.

결과적으로 결함이 있는 파일 목록을 가져옵니다. 그건 그렇고, 속도를 위해 스크립트는 사용자가 일반적으로 파일을 업로드하는 디렉토리(루트, /wp-content/themes 및 /wp-content/plugins)만 확인합니다.

기본적으로 그렇습니다. 그런 간단한 문제를 푸는 것이 얼마나 어려운지. 제 경험이 조금이나마 도움이 되었기를 바랍니다. 이제 해당 경고가 나타나면 무엇을 해야 하는지 알게 될 것입니다. :) BOM에서 하나 또는 다른 파일을 수정할 수 없다면 WordPress 배포판에서 새 파일을 업로드하기만 하면 됩니다.

추신 신혼 부부에게 적합한 장소는 연회 조직 및 결혼식과 관련된 모든 문제의 해결입니다.

작은 실수가 완전한 결과로 이어질 수 있다는 것은 놀라운 일입니다. 서비스 중단당신의 워드프레스 사이트. 물론 우리는 잘 알려진 WordPress 오류 경고에 대해 이야기하고 있습니다. 경고: 헤더 정보를 수정할 수 없습니다. 헤더가 이미 pluggable.php에서 전송되었습니다.. 이 오류에 직면한 사람 중 하나라면 제대로 찾아오셨습니다. 여기서 우리는 먼저이 오류가 나타나는 이유에 대해 논의하고 마침내 문제를 해결할 솔루션을 살펴볼 것입니다.

필요한 것

시작하기 전에 다음이 있는지 확인하십시오.

  • 호스팅 제어판에 대한 액세스 또는 FTP 액세스

헤더 정보를 수정할 수 없는 방법 - 이미 오류로 전송된 헤더가 발생하는 경우

이유를 더 잘 이해하기 위해 이 오류의 예를 살펴보겠습니다. 오류는 일반적으로 다음과 같은 형식으로 나타납니다.

경고: 헤더 정보를 수정할 수 없음 - /public_html/wp-includes/pluggable.php의 /public_html/wp-includes/pluggable.php에서 이미 보낸 헤더(출력은 /public_html/wp-content/plugins/my-plugin/my-function.php:#에서 시작됨) #

보시다시피 오류는 두 개의 파일을 언급합니다. 첫 번째 파일(이 경우: my-function.php에 수납 /public_html//wp-content/plugins/my-plugin/) 용의자의 머리에. 이것은 WordPress에서 제공하는 핵심 기능을 변경하기 위한 사용자 정의 코드입니다. 커널 기능은 파일에 있습니다. 플러그인 가능.php(WordPress 코어 파일, 워드프레스 설치). 즉, 문제는 첫 번째 파일에 있으므로 두 번째 파일이 제대로 실행되지 않습니다.

오류의 주요 원인은 추가 첫 번째 파일의 공백. 파일 상단이나 하단의 공백, 파일의 불필요한 공백 또는 PHP 태그의 공백입니다. . 그건 그렇고, 프로그래머가 실수로 코드에 추가 공백을 삽입할 수 있기 때문에(그리고 일반적으로 그렇게 하기 때문에) 이 오류는 예상보다 더 자주 발생합니다. 오류 메시지에 나열된 # 행은 문제의 위치를 ​​나타냅니다. 이렇게 하면 문제를 더 빠르고 쉽게 해결할 수 있습니다.

수정이 헤더 정보를 수정할 수 없음 - 헤더가 이미 전송됨

이제 오류의 원인을 알았으므로 수정으로 이동할 수 있습니다. 문제를 해결하는 두 가지 옵션을 보여 드리겠습니다. 개별적으로 또는 개별적으로 도움이 되지 않는 경우 차례로 시도해 볼 수 있습니다.

옵션 1 - 잘못된 파일 편집

오류에 대한 첫 번째 해결책 경고: 헤더 정보를 수정할 수 없습니다.– 오류가 있는 파일의 수동 수정. 오류 메시지 자체에서 문제를 찾는 데 필요한 정보가 이미 있습니다(이것이 메시지의 첫 번째 파일임을 기억하십시오). FileZilla와 같은 클라이언트를 사용하거나 파일 관리자를 통해 FTP를 통해 이 파일을 열기만 하면 됩니다.

기본적으로 여기에서 처리해야 할 모든 것은 파일에서 추가 공백/빈 줄을 제거하는 것입니다. 좋은 곳시작하려면 오류 메시지에 언급된 # 줄이 있습니다. 이 시점부터 문서가 끝날 때까지 파일의 나머지 부분을 계속 구문 분석하여 불필요한 공백이나 빈 줄을 찾을 수 있습니다.

PHP 시작 및 종료 태그를 올바르게 작성했는지 확인하십시오. 태그 앞뒤에 공백이 없어야 합니다. , 태그와 동일 ?> . 또한 코드의 마지막 줄은 공백이나 추가 줄 바꿈으로 끝나지 않아야 합니다.

아래 스크린샷에서 파일을 볼 수 있습니다 wp-config.php, 첫 번째 PHP 태그 앞에 공백이 있습니다.


즉각적인: 많은 텍스트 편집기에서 불필요한 공백을 자동으로 제거할 수 있습니다. 예를 들어 제거하려면 여분의 공간 Atom 편집기에서 모든 코드를 선택하고 P로 이동합니다. 패키지 -> 공백 -> 후행 공백 제거.

옵션 2 - 결함이 있는 파일 교체

물론 오류가 있는 여러 파일을 편집하는 것은 어려울 수 있습니다. 파일은 사이트에 방금 설치한 플러그인 또는 테마와 관련되거나 WordPress 핵심 파일일 수도 있습니다.

오류가 실제로 플러그인이나 테마로 인해 발생한 경우에는 다시 설치하기만 하면 됩니다. 이 작업은 대부분의 경우에 도움이 됩니다. 반면에 워드프레스 코어 파일이 오류를 일으키는 경우, 최고의 솔루션 WordPress의 깨끗한 사본을 가져 와서 설치의 버그가 있는 파일을 올바른 버전으로 교체하십시오. 이렇게 하면 결함이 있는 파일이 다음에서 복구됩니다. 초기 상태, 나머지 WordPress 사이트 설치는 안전하고 건전하게 유지됩니다. 이제 페이지를 새로고침하고 오류가 수정되었는지 확인하십시오.

결론적으로

코드 스니펫을 파일에 붙여넣었거나, 새 플러그인/테마를 추가했거나, 손으로 코드를 작성했는지 여부에 관계없이 파일에 공백이 추가될 위험이 있습니다. 이 겉보기에 무해한 공간은 WordPress 버그가 될 수 있습니다. 경고: 헤더 정보를 수정할 수 없습니다. 헤더가 이미 전송되었습니다..

이 가이드에서는 이러한 오류를 수정하는 방법을 다루었으며 이제 사이트가 예상대로 다시 작동합니다. 더 많은 WordPress 가이드는 여기에서 찾을 수 있습니다.

작가

Elena는 현장에서 전문적인 기술 교육을 받았습니다. 정보 기술및 프로그래밍 경험 다른 언어들아래에 다양한 플랫폼및 시스템. 그녀는 Drupal, Joomla, Magento는 물론 오늘날 가장 인기 있는 콘텐츠 관리 시스템인 WordPress와 같은 다양한 CMS와 함께 웹 영역에 10년 이상을 바쳤습니다. 그녀의 기사는 WordPress 리뷰이든 VPS 서버 설정 방법이든 항상 기술적이고 정확합니다.

이 기사에서는 "헤더가 이미 전송되었기 때문에 변경할 수 없습니다" 오류의 주요 원인과 해결 방법을 살펴보겠습니다. ("헤더 정보를 수정할 수 없음 - 헤더가 이미 전송됨").

이 오류는 무엇을 의미합니까?

오류의 원인을 이해하려면 먼저 이러한 "헤더"가 무엇인지 이해해야 합니다.

이론으로 들어가지 맙시다. 사용자가 웹 페이지를 열기 전에 인코딩, 사이트 언어, 서버 데이터 및 기타 서비스 정보가 포함된 동일한 "헤더"가 사용자에게 전송된다고 가정해 보겠습니다. 쿠키와 세션도 헤더로 전송된다는 점을 별도로 추가할 가치가 있습니다.

이 오류를 일으키는 명령은 무엇입니까?

실수 "헤더 정보를 수정할 수 없음 - 헤더가 이미 보낸 사람" header , setcookie 및 쿠키 또는 세션 작업과 관련된 기타 PHP 명령을 호출할 수 있습니다.

오류의 원인과 해결 방법.

제일 흔한 실수경험 부족에서 온다. 페이지 자체가 로드되기 전에 헤더가 전송된다는 사실을 이미 알아냈습니다.

그러나 프로그래머, 특히 초보자는 단순히 이것을 잊거나 알지 못합니다. 그리고 먼저 그들은 페이지에 무언가를 표시하려고 시도합니다. 가장 자주 echo 명령을 사용하여 쿠키를 설정하고 헤더를 보내는 등의 작업을 수행합니다. 이 오류로 이어집니다.

다음은 이러한 오류가 발생하는 코드의 예입니다.

올바른 옵션은 다음과 같습니다.

즉, 먼저 헤더를 보내기 전에 아무 것도 표시할 수 없습니다!

항상 명확하지는 않지만 약간의 차이가 있는 오류가 있습니다. 이것은 PHP 문서가 공백이나 빈 줄로 시작하는 경우이며, 이는 이러한 줄이 브라우저에 표시됨을 의미합니다.

예를 들어 Windows 메모장은 경고 없이 이 기호를 표시하지 않고 먼저 바이트 순서 표시를 추가할 수 있기 때문에 따르기가 매우 어려울 수 있습니다. 이 경우 다른 편집자와 함께 문서를 열어 확인하는 것이 좋습니다.

다음은 잘못된 헤더의 예입니다.

즉, 두 번째로 전에

include 명령을 사용할 경우에는 특히 주의해야 합니다. 실제로는 모든 파일을 결합하여 하나의 결과를 만들고, 사이트 헤더(슬라이더, 메뉴 등)를 먼저 포함시킨 다음 메인 파일에 헤더를 보내려고 하면, 그러면 당연히 이 오류가 발생합니다.

다음은 이러한 잘못된 코드의 예입니다.

이 오류 메시지는 PHP를 처음 시작하는 프로그래머에게 자주 나타납니다. 이 오류가 발생하는 이유를 이해하면 솔루션을 찾는 데 도움이 됩니다.

PHP는 사용자가 묻지 않아도 웹 페이지를 생성하는 많은 작업을 수행합니다. 웹 페이지는 머리글과 본문의 두 부분으로 구성됩니다.

이 일반적인 PHP 오류는 프로그래머가 헤더를 조작하거나 생성할 때 실수를 할 때 관찰됩니다. 다음은 예입니다.

경고: 헤더 정보를 수정할 수 없음 - 12행의 /home/usr1/public_html/includes/theme-header.php에서 (/home/usr1/public_html/sent.php:42에서 시작된 출력) 이미 보낸 헤더

일반적으로 헤더는 자동으로 생성되며 페이지, 서버, 쿠키에 대한 정보를 포함하므로 걱정할 필요가 없습니다. 헤더의 정보는 중요하지만 일반적으로 사용자에게 표시되지 않습니다. 여기 몇 가지 예가 있어요.

날짜: 2006년 7월 10일 월요일 18:51:59 GMT 서버: Apache/2.2.0(Unix) mod_ssl/2.2.0 OpenSSL/0.9.7g 콘텐츠 인코딩: gzip 콘텐츠 유형: text/html

때때로 프로그래머는 일부 헤더 값을 변경하기를 원합니다. 예를 들어, PHP가 XML 출력을 생성하는 경우 이를 나타내도록 Content-Type을 변경해야 합니다. 또 다른 일반적인 예는 이 문서에 설명된 대로 Location 헤더 요소를 사용하여 사용자의 브라우저를 다른 웹 페이지로 리디렉션하는 것입니다.

헤더는 웹 서버의 응답에서 맨 처음에 와야 하며 본문과 한 줄의 공백으로 구분됩니다. 이 오류의 원인은 헤더 값을 설정하려고 시도하기 전에 웹 페이지 본문의 일부가 이미 사용자에게 전송되었기 때문입니다. PHP를 사용하면 많은 작업을 쉽게 수행할 수 있으므로 문제가 일반적인 위치에 숨겨져 있을 수 있습니다. 다음은 문제를 찾기 위한 몇 가지 지침입니다.

  1. 문제를 일으키는 header() 명령어를 찾으십시오. 오류는 이 줄에 있거나 그 앞에 있어야 합니다.
  2. 이 헤더 명령 이전에 사용자에게 출력을 지시할 수 있는 명령을 찾으십시오. 하나 이상을 찾으면 헤더 문을 앞으로 이동하도록 코드를 변경합니다. 복잡한 조건문문제를 복잡하게 만들 수 있지만 문제 해결에 도움이 될 수도 있습니다. 또는 가능한 한 빨리 헤더 값을 결정하고 거기에 설정하는 조건부를 PHP 스크립트 상단에 적용할 수 있습니다.
  3. 시작 및 종료 PHP 태그 외부에 공백이 없는지 확인하십시오. 시작 태그 앞의 빈 줄이
  4. 파일을 UTF-8 인코딩으로 저장하는 경우 파일이 서명 없이(BOM 없이) 저장되었는지 확인하십시오. 서명은 파일의 시작 부분에 추가된 바이트이며 PHP 스크립트가 이 형식으로 저장되면 이 바이트는 페이지 본문 출력의 일부로 인식되므로 문제를 피하기 위해 허용되어서는 안 됩니다. 고려하고 있습니다.