프로그래밍 언어/PHP

참조-PHP에서 발생하는 오류 목록

Rateye 2021. 8. 5. 10:44
728x90
반응형
질문 : 참조-PHP에서이 오류는 무엇을 의미합니까?

What is this?

이것은 PHP를 프로그래밍하는 동안 발생할 수있는 경고, 오류 및 알림에 대한 여러 답변이며 해결 방법에 대한 단서가 없습니다. 이것은 또한 커뮤니티 위키이므로 모든 사람이이 목록을 추가하고 유지하는 데 참여하도록 초대됩니다.

What is this?

"헤더가 이미 전송되었습니다" 또는 "비 개체의 구성원에게 전화하기 "와 같은 질문이 스택 오버플로에 자주 나타납니다. 이러한 질문의 근본 원인은 항상 동일합니다. 따라서 이러한 질문에 대한 답변은 일반적으로 반복 한 다음 특정 경우에 변경할 줄을 OP에 표시합니다. 이 답변은 OP의 특정 코드에만 적용되므로 사이트에 가치를 추가하지 않습니다. 동일한 오류가있는 다른 사용자는 너무 현지화되어 있기 때문에 솔루션을 쉽게 읽을 수 없습니다. 근본 원인을 이해 한 후에는 오류를 수정하는 것이 사소하기 때문에 슬픈 일입니다. 따라서이 목록은 일반적인 적용 방식으로 솔루션을 설명하려고합니다.

What should I do here?

질문이 이 질문의 중복으로 표시된 경우 아래에서 오류 메시지를 찾아 수정 사항을 코드에 적용하십시오. 답변에는 일반적으로 일반적인 답변만으로는 명확하지 않은 경우 조사 할 추가 링크가 포함되어 있습니다.

기여하고 싶다면 "좋아하는"오류 메시지, 경고 또는 알림, 답변 당 하나씩, 의미하는 간단한 설명 (매뉴얼 페이지의 용어 만 강조 표시하더라도), 가능한 솔루션 또는 디버깅 접근 방식을 추가하십시오. 가치있는 기존 Q & A 목록. 또한 기존 답변을 자유롭게 개선하십시오.

The List

또한 다음을 참조하십시오.

답변

스크립트가 HTTP 헤더를 클라이언트에 보내려고하지만 이전에 이미 출력이있어 헤더가 이미 클라이언트에 전송 된 경우에 발생합니다.

이것은 E_WARNING 이며 스크립트를 중지하지 않습니다.

일반적인 예는 다음과 같은 템플릿 파일입니다.

<html>
    <?php session_start(); ?>
        <head><title>My Page</title>
        </html>
        ...
        

session_start() 함수는 세션 쿠키와 함께 헤더를 클라이언트로 보내려고합니다. 그러나 PHP는 출력 스트림에 <html> 요소를 쓸 때 이미 헤더를 보냈습니다. session_start() 를 맨 위로 이동해야합니다.

경고를 트리거하는 코드 앞에 있는 줄을 살펴보고 출력 위치를 확인하여이 문제를 해결할 수 있습니다. 헤더를 보내는 코드를 해당 코드 앞에 이동합니다.

자주 간과되는 출력은 PHP가 닫은 후의 새 줄 ?> 입니다. ?> 파일에서 마지막 항목 일 때 생략하는 것은 표준 관행으로 간주됩니다. 마찬가지로,이 경고의 또 다른 일반적인 원인은 여는 <?php 앞에 빈 공간, 줄 또는 보이지 않는 문자가있어 웹 서버가 헤더와 공백 / 줄 바꿈을 보내므로 PHP가 구문 분석을 시작할 때 발생하지 않습니다. 헤더를 제출할 수 있습니다.

파일에 둘 이상의 <?php ... ?> 코드 블록이있는 경우 그 사이에 공백이 없어야합니다. (참고 : 자동으로 생성 된 코드가있는 경우 여러 블록이있을 수 있습니다.)

또한 코드에 바이트 순서 표시가 없는지 확인하십시오 (예 : 스크립트 인코딩이 BOM이있는 UTF-8 인 경우).

관련 질문 :

출처 : https://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php
728x90
반응형