[문제 현상]: PHP에서 HTML 파일을 생성할 때 헤드에 있는 정적 파일이 바디에 생성되는 것을 확인해보니 UFT8 PHP 파일이 많고 그 중 일부에 BOM 헤더 파일이 있는 것으로 나타났습니다. .
[원인 분석]: 인코딩 형식이 잘못되어 UTF-8 BOM 헤더를 사용하고 있습니다.
[해결책]: 루트 디렉터리에 새로운 bom.php 파일을 생성하고, 여기에 다음 코드를 복사한 후 서비스를 다시 시작하세요.
<?php if (isset($_GET['dir'])) { //设置文件目录 $basedir = $_GET['dir']; } else { $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir) { if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { if (!is_dir($basedir . "/" . $file)) { echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " <br>"; } else { $dirname = $basedir . "/" . $file; checkdir($dirname); } } } closedir($dh); } } function checkBOM($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { if ($auto == 1) { $rest = substr($contents, 3); rewrite($filename, $rest); return ("<font color='red'>BOM found, automatically removed.</font>"); } else { return ("<font color='red'>BOM found.</font>"); } } else return ("BOM Not Found."); } function rewrite($filename, $data) { $filenum = fopen($filename, "w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); } ?>
위의 문제는 다음과 같은 문제로 인해 발생합니다. PHP Murder의 bom 헤더 - Head의 정적 파일이 Body에 생성됩니다. 자세한 내용은 PHP 중국어 사이트(www.php.cn)를 참고해주세요!