You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

动态XML站点地图脚本触发XML解析错误,无法正常运行如何解决?

错误原因及排查方案

这个XML Parsing Error: XML or text declaration not at start of entity错误的核心逻辑是XML规范要求XML声明<?xml version="1.0" encoding="UTF-8"?>必须是文档的第一个内容,前面不能有任何多余的空格、换行、报错信息等字符,代码运行时XML声明前有额外输出才触发该报错,可按以下步骤排查:

  • 排查引入的connect.php文件:确认该文件的<?php开头标签前没有空格、换行、UTF-8 BOM头,同时删掉文件末尾的?>闭合标签(PHP文件无需强制写末尾闭合标签,可彻底避免标签后多余空格/换行被输出)。
  • 排查当前站点地图脚本本身:确认编写这段代码的PHP文件,<?php开头标签前没有任何空行、空格、字符,哪怕一个空白字符都会导致问题。
  • 排查PHP报错前置输出:在代码最开头临时加入以下两行,访问页面查看是否有连接报错、引入文件失败等警告信息,这些报错内容会提前输出到XML内容前,先解决所有报错再恢复报错屏蔽配置:
error_reporting(E_ALL);
ini_set('display_errors', 1);
  • 用输出缓冲兜底:如果排查完所有文件还是找不到多余输出的来源,可以在代码最开头开启输出缓冲,所有内容会先缓存到内存中最后统一输出,避免零散提前输出,参考修正后的代码:
<?php
ob_start(); // 第一行就开启缓冲
include("connect.php");
$query = "SELECT `website_url` FROM `websites`";
$result = mysqli_query($conn, $query);
$base_url = "http://localhost/test/www.shopperapproved.com/";
header("Content-Type: application/xml; charset=utf-8");
echo '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">' . PHP_EOL;
while($row = mysqli_fetch_array($result)) {
echo '<url>' . PHP_EOL;
echo '<loc>'.$base_url. $row["website_url"] .'</loc>' . PHP_EOL;
echo '<changefreq>daily</changefreq>' . PHP_EOL;
echo '</url>' . PHP_EOL;
}
echo '</urlset>' . PHP_EOL;
ob_end_flush(); // 统一输出缓冲内容

内容的提问来源于stack exchange,提问作者JohnBowls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:39:00