PHP 헤더가 작동하지 않는 방법: 1. 위치와 ":" 사이의 공백을 삭제합니다. 2. 헤더를 사용하기 전에 출력을 삭제합니다. 3. 헤더가 실행된 후의 PHP 코드입니다.
본 글의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP 헤더가 작동하지 않으면 어떻게 해야 하나요?
PHP 헤더에 대한 원인 분석 및 해결 방법 PHP에서
헤더("location:test.php")를 사용하여 점프할 때 다음 사항에 주의하세요.
1 위치와 ":" 사이에 공백이 있으면 안 됩니다. 그렇지 않으면 오류가 발생합니다. .
2. 헤더를 사용하기 전에는 포함 페이지의 "?>" 태그 뒤에 공백이 없어야 합니다. !
3. 헤더 뒤의 PHP 코드도 실행됩니다.
계속:
문제: 헤더 함수 이전에 콘텐츠를 입력합니다.
일반적으로 html 콘텐츠는 헤더 함수 이전에 출력할 수 없습니다. 유사한 함수에는 setcookie() 및 세션 함수가 포함되어 출력에 메시지 헤더 정보를 추가해야 합니다. 개울. . header()가 실행되기 전에 echo와 같은 문이 있는 경우 나중에 header()를 만나면 "경고: 헤더 정보를 수정할 수 없습니다. 헤더는 이미 전송되었습니다...."라는 오류가 보고됩니다. 즉, 이들 함수 앞에는 텍스트, 빈 줄, 캐리지 리턴 등이 있어서는 안 되며, header() 함수 뒤에 exit() 함수를 추가하는 것이 가장 좋습니다. 예를 들어, 다음과 같이 잘못 작성하면 두 PHP 코드 조각 사이에 빈 줄이 있습니다.
//여기에 빈 줄이 있어야 합니다
이유:
PHP 스크립트가 실행되기 시작하면 http를 보낼 수 있습니다. 메시지 헤더(헤더) 정보와 본문 정보는 동시에(header() 또는 SetCookie() 함수에서) 전송되지 않고 목록에 저장됩니다. 기본 헤더(예: Content-Type 헤더)를 포함한 헤더 정보. 그러나 스크립트가 헤더가 아닌 출력(예: HTML 또는 print() 호출 사용)을 보내면 PHP는 먼저 모든 헤더를 보내야 합니다. 그런 다음 HTTP 헤더를 종료합니다. 그런 다음 본문 데이터 보내기를 계속합니다. 이 시점부터 헤더 정보를 추가하거나 수정하려는 시도는 허용되지 않으며 위의 오류 메시지 중 하나가 전송됩니다.
해결책:
php.ini를 수정하여 캐시(output_buffering)를 열고,output_buffering=0을output_buffering=4096
으로 변경하거나 프로그램에서 캐시 함수 ob_start(), ob_end_flush() 등을 사용하세요. 원칙은 다음과 같습니다. output_buffering이 활성화되면 스크립트가 출력을 보낼 때 PHP는 HTTP 헤더를 보내지 않습니다. 대신, 이 출력을 동적으로 증가하는 캐시로 연결합니다(중앙 집중식 출력 메커니즘이 있는 PHP 4.0에서만 사용 가능). 헤더는 실제로 전송되지 않으므로 헤더를 수정/추가하거나 쿠키를 설정할 수 있습니다. 모든 스크립트가 종료되면 PHP는 자동으로 HTTP 헤더를 브라우저에 보낸 다음 출력 버퍼의 내용을 보냅니다.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP 헤더가 작동하지 않으면 어떻게 해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!