경고: 헤더 정보를 수정할 수 없습니다. 헤더는 이미 /some/file.php의 12번째 라인, /some/file.php의 23번째 라인에서 출력을 보내기 시작했습니다.
P粉164942791
2023-07-30 11:19:01
<p>출력 전에 헤더를 전송해야 하는 이유를 이해하려면 일반적인 HTTP 응답을 살펴봐야 합니다. PHP 스크립트는 주로 HTML 컨텐츠를 생성하고 HTTP/CGI 헤더 세트를 웹 서버에 전달합니다. 이 오류는 서버에 데이터베이스나 PHP 사이트가 있는 웹사이트를 호스팅할 때 발생합니다. 먼저, 호스팅 웹사이트로 이동하여 .htaccess 파일을 찾아 여기에 다음 명령을 추가하면(php_flag 출력_버퍼링 켜짐) 문제가 해결됩니다. </p>
이 문제를 해결하기 위해 수행할 수 있는 작업은 다음과 같습니다.
지정된 줄 확인: 경고 메시지에는 /some/file.php의 12번째 줄에서 출력이 시작되고 해당 줄에서 헤더 정보를 수정하려고 한다는 내용이 표시됩니다. 23. 다음 줄로 이동하여 23번 줄의 header() 함수 호출 앞에 공백, 에코, 인쇄, HTML 또는 기타 출력이 없는지 확인하세요.
모든 선행 공백 제거: 현재 파일 앞에 PHP 파일이 포함되거나 필요한 경우(예: include 또는 require 사용), 해당 파일의 여는 <?php 태그 앞에 선행 공백이 없는지 확인하세요. PHP 태그 외부의 공백은 출력으로 간주되어 이 경고가 발생할 수 있습니다.
닫는 PHP 태그 피하기: PHP 코드만 포함하는(HTML 없음) PHP 파일에서는 일반적으로 파일 끝에 닫는 PHP 태그(?>)를 생략하는 것이 좋습니다. 이렇게 하면 닫는 태그 뒤에 예기치 않은 공백이나 문자가 없어 출력이 트리거되는 것을 방지할 수 있습니다.
출력 버퍼링 사용: header() 호출 전에 피할 수 없는 출력이 있는 경우(예: 라이브러리 종속성 또는 조건문으로 인해) 출력 버퍼링을 사용하여 출력을 캡처하고 출력이 브라우저로 즉시 전송되지 않도록 할 수 있습니다. PHP 스크립트 시작 부분에서 ob_start()를 사용하여 출력 버퍼링을 시작하고, ob_end_flush() 또는 ob_end_clean()을 사용하여 header() 호출 전에 출력 버퍼링을 종료합니다.
출력 버퍼링 사용 예:
으아아아