현재 위치: > 최신 기사 목록> BOM 헤더로 인한 헤더 () 실패의 숨겨진 문제를 무시합니다.

BOM 헤더로 인한 헤더 () 실패의 숨겨진 문제를 무시합니다.

M66 2025-05-28

PHP 프로그래밍에서는 종종 헤더 () 함수가 작동하지 않는 상황에 종종 발생합니다. 헤더 () 함수는 일반적으로 페이지의 콘텐츠 유형을 설정하거나 사용자를 리디렉션하는 등 스크립트 출력 전에 원시 HTTP 헤더를 보내는 데 사용됩니다. 그러나 많은 개발자들이 헤더 ()를 사용할 때 갑작스런 고장을 겪을 수있어 혼란을 일으 킵니다. 그렇다면 왜 헤더 () 기능이 갑자기 실패합니까? 이 숨겨진 문제 (바이트 주문 마킹)를 무시하고있을 가능성이 높습니다.

BOM 헤더 란 무엇입니까?

BOM (바이트 주문 마크)은 텍스트 파일의 바이트 순서를 나타내는 유니 코드 인코딩의 특수 마커입니다. 일반적으로 파일의 시작 부분에 보이지 않는 문자가 포함되어 있습니다. BOM 헤더는 일반 텍스트 파일을 읽는 데 영향을 미치지 않지만 PHP의 헤더 () 함수에 큰 영향을 미칩니다.

PHP에서는 출력 전에 헤더 () 함수를 호출해야합니다. 다시 말해, 헤더 ()를 호출 한 후 출력이있을 수 없습니다 (HTML 태그, 공백, 라인 브레이크 등). BOM 헤더는 실제로 파일의 시작의 일부이며 파일 전면에 보이지 않는 바이트를 추가합니다. PHP 파일이 UTF-8 인코딩되고 BOM 헤더가 포함 된 경우, 이러한 보이지 않는 문자는 PHP 출력 전에 브라우저로 전송되므로 HTTP 응답 헤더가 부분적으로 전송되었으므로 헤더 () 기능이 제대로 작동하지 않습니다.

BOM 헤더를 확인하고 제거하는 방법?

  1. Bom 헤더 <br>를 확인하십시오 텍스트 편집기 (예 : Notepad ++ 또는 Sublime Text)를 사용하여 PHP 파일을 열어 BOM 헤더가 있는지 확인할 수 있습니다. 파일이 UTF-8 인코딩되어 BOM 헤더가 포함 된 경우 텍스트 편집기에는 일반적으로 관련 로고가 있습니다.

  2. Bom 헤더를 제거하십시오 <br> 파일에 BOM 헤더가 포함되어있는 경우 다음 방법으로 제거 할 수 있습니다.

    • Notepad ++ 에서 파일을 열면 인코딩 메뉴를 클릭하고 BOM없이 UTF-8을 선택하십시오.

    • Sublime Text 에서는 인코딩 옵션을 사용하여 UTF-8 형식 (BOM 없음)으로 저장하십시오.

  3. PHP를 다루는 방법 <br> 파일의 인코딩을 직접 수정할 수 없거나 편집 도구가 지원되지 않으면 PHP의 다음 코드를 사용하여 BOM 헤더를 지울 수도 있습니다.

     <?php
    // 파일 상단 에이 코드를 추가하십시오
    if (substr(utf8_decode(file_get_contents('yourfile.php')), 0, 3) == "\xEF\xBB\xBF") {
        file_put_contents('yourfile.php', substr(file_get_contents('yourfile.php'), 3));
    }
    ?>
    

    이를 통해 파일에 BOM 헤더가 있는지 확인하고 파일이로드 될 때 제거 할 수 있습니다.

일반적인 오류 예제

  1. 오류 PHP 코드 :

     <?php
    // BOM 머리는 원인입니다 header() 유효하지 않은
    header("Location: https://m66.net");
    exit;
    ?>
    

    이 PHP 파일에 BOM 헤더가 포함되어 있으면 헤더 () 함수가 제대로 작동하지 않으며 브라우저는 이미 시작된 응답을 수신하여 리디렉션을 방지 할 수 없습니다.

  2. 해결책:
    BOM 헤더를 제거하거나 출력 전에 헤더 () 함수가 호출되는지 확인하십시오.

     <?php
    // 삭제 BOM 머리 후
    header("Location: https://m66.net");
    exit;
    ?>
    

요약

PHP 프로그램을 개발할 때 헤더 () 함수가 실패하는 일반적인 이유 중 하나는 파일에 BOM 헤더가 포함되어 있기 때문입니다. BOM 헤더는 일반적으로 쉽게 발견되지 않지만 헤더 () 함수를 방해합니다. 이를 피하기 위해 개발자는 저장된 PHP 파일에 BOM 헤더가 포함되어 있지 않도록하고 파일을 인코딩 할 때 BOM이없는 UTF-8 인코딩 형식을 선택하는 데주의를 기울일 수 있습니다.

비슷한 문제가 발생하면 파일 인코딩을 확인하고 BOM 헤더가 문제를 해결하는 효과적인 방법이 없는지 확인하십시오.