질문 : 참조-PHP에서이 오류는 무엇을 의미합니까?
What is this?
이것은 PHP를 프로그래밍하는 동안 발생할 수있는 경고, 오류 및 알림에 대한 여러 답변이며 해결 방법에 대한 단서가 없습니다. 이것은 또한 커뮤니티 위키이므로 모든 사람이이 목록을 추가하고 유지하는 데 참여하도록 초대됩니다.
What is this?
"헤더가 이미 전송되었습니다" 또는 "비 개체의 구성원에게 전화하기 "와 같은 질문이 스택 오버플로에 자주 나타납니다. 이러한 질문의 근본 원인은 항상 동일합니다. 따라서 이러한 질문에 대한 답변은 일반적으로 반복 한 다음 특정 경우에 변경할 줄을 OP에 표시합니다. 이 답변은 OP의 특정 코드에만 적용되므로 사이트에 가치를 추가하지 않습니다. 동일한 오류가있는 다른 사용자는 너무 현지화되어 있기 때문에 솔루션을 쉽게 읽을 수 없습니다. 근본 원인을 이해 한 후에는 오류를 수정하는 것이 사소하기 때문에 슬픈 일입니다. 따라서이 목록은 일반적인 적용 방식으로 솔루션을 설명하려고합니다.
What should I do here?
질문이 이 질문의 중복으로 표시된 경우 아래에서 오류 메시지를 찾아 수정 사항을 코드에 적용하십시오. 답변에는 일반적으로 일반적인 답변만으로는 명확하지 않은 경우 조사 할 추가 링크가 포함되어 있습니다.
기여하고 싶다면 "좋아하는"오류 메시지, 경고 또는 알림, 답변 당 하나씩, 의미하는 간단한 설명 (매뉴얼 페이지의 용어 만 강조 표시하더라도), 가능한 솔루션 또는 디버깅 접근 방식을 추가하십시오. 가치있는 기존 Q & A 목록. 또한 기존 답변을 자유롭게 개선하십시오.
The List
- 아무것도 보이지 않습니다. 페이지가 비어 있고 흰색입니다. (White Page / Screen Of Death 라고도 함)
- 코드가 실행되지 않음 / 내 PHP 코드의 일부가 출력되는 것처럼 보입니다.
- 경고 : 헤더 정보를 수정할 수 없습니다. 헤더가 이미 전송되었습니다.
- 경고 : mysql_fetch_array ()는 매개 변수 1이 리소스가 될 것으로 예상합니다.
경고 : mysql_fetch_array () : 제공된 인수는 유효한 MySQL 결과 리소스가 아닙니다. - 경고 : [함수] 는 매개 변수 1이 자원이 될 것으로 예상하고 부울이 주어집니다.
- 경고 : [기능] : 스트림을 열지 못했습니다. [이유]
- 경고 : open_basedir 제한 적용
- 경고 : 0으로 나누기
- 경고 : 잘못된 문자열 오프셋 'XXX'
- 경고 : count () : 매개 변수는 Countable을 구현하는 배열 또는 객체 여야합니다.
- 구문 분석 오류 : 구문 오류, 예기치 않은 '['
- 구문 분석 오류 : 구문 오류, 예상치 못한 T_XXX
- 구문 분석 오류 : 구문 오류, 예상치 못한 T_ENCAPSED_AND_WHITESPACE
- 구문 분석 오류 : 구문 오류, 예상치 못한 T_PAAMAYIM_NEKUDOTAYIM
- 구문 분석 오류 : 구문 오류, 예기치 않은 'require_once'(T_REQUIRE_ONCE), 예상 함수 (T_FUNCTION)
- 구문 분석 오류 : 구문 오류, 예상치 못한 T_VARIABLE
- 치명적 오류 : 허용 된 메모리 크기 XXX 바이트 소진 (XXX 바이트 할당 시도)
- 치명적 오류 : 비 개체 또는 null에서 멤버 함수 호출 ...
- 치명적인 오류 : 정의되지 않은 함수 XXX 호출
- 치명적인 오류 : XXX를 다시 선언 할 수 없습니다.
- 치명적인 오류 : 쓰기 컨텍스트에서 함수 반환 값을 사용할 수 없습니다.
- 치명적인 오류 : AAA :: BBB () 선언은 CCC :: BBB () '선언과 호환되어야합니다.
- 치명적인 오류 : 개체 컨텍스트가 아닐 때 $ this 사용
- 치명적인 오류 : Closure 클래스의 개체를 문자열로 변환 할 수 없습니다.
- 치명적인 오류 : 정의되지 않은 클래스 상수
- 치명적인 오류 : 포착되지 않은 TypeError : 인수 #n은 x, y 유형이어야합니다.
- 주의 : 배열에서 문자열로 변환
- 주의 : 비 객체 오류의 속성을 얻으려고 시도합니다.
- 주의 : 정의되지 않은 변수 또는 속성
- 고시 : 정의되지 않은 색인
- 주의 : 정의되지 않은 오프셋 XXX [참조]
- 알림 : 초기화되지 않은 문자열 오프셋 : XXX
- 주의 : 정의되지 않은 상수 XXX 사용- 'XXX'로 가정
- MySQL : SQL 구문에 오류가 있습니다. 사용하는 MySQL 서버 버전에 해당하는 설명서에서 ... at line 근처에서 사용할 올바른 구문을 확인하십시오.
- 엄격한 표준 : 비 정적 메서드 [<class> :: <method>] 는 정적으로 호출하면 안됩니다.
- 경고 : 함수는 매개 변수 X가 부울 / 문자열 / 정수 여야합니다.
- HTTP 오류 500-내부 서버 오류
- 더 이상 사용되지 않음 : 중괄호가있는 배열 및 문자열 오프셋 액세스 구문은 더 이상 사용되지 않습니다.
또한 다음을 참조하십시오.
답변
스크립트가 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
'프로그래밍 언어 > PHP' 카테고리의 다른 글
PHP 발생한 오류를 확인 하는 방법 (0) | 2021.08.06 |
---|---|
PHP 임의 문자열 생성기 (0) | 2021.08.06 |
PHP 'foreach'의 작동 원리 (0) | 2021.08.05 |
PHP를 사용하여 배열이 비어 있는지 확인하는 방법 (0) | 2021.08.05 |
PHP에서 @ 기호의 의미 (0) | 2021.08.04 |