PHP 在 XML 开始标记上抛出错误

标签 php php-parse-error

我有一个文件,其中包含一个名为 sitemap.html 的文件在站点地图中,我有以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <url>
        <loc><?php echo SITE_URL . '/'; ?></loc>
        <changefreq>monthly</changefreq>
        <priority>1.00</priority>
    </url>

    <?php foreach ($this->data->content as $content): ?>
        <url>
            <loc><?php echo SITE_URL . $content->permalink; ?></loc>
            <lastmod><?php echo date("Y-m-d", $content->publish_date); ?></lastmod>
            <changefreq>monthly</changefreq>
            <priority><?php echo $content->sitemap_index; ?></priority>
        </url>
    <?php endforeach; ?>
</urlset>

一切似乎都很好,但我收到错误 500,内容如下:

PHP Parse error: syntax error, unexpected 'version' (T_STRING) in sitemap.html on line 1

如您所见,我正在使用 <?xml而不是 <?php那么为什么它试图将其解析为 PHP?

起初,我以为是魔术引号导致了问题,但是当我执行 get_magic_quotes_gpc() 的 var_dump 时, 我得到 bool(false)所以魔法引号甚至都没有打开。

此外,在我的 php.ini , 我看到 magic_quotesOFF .

作为修复它的替代方法,我将第一行替换为以下内容:

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>

但我仍然对发生的事情感到好奇。

我在同一台服务器上托管了其他网站(PHP 版本 5.4.45),但我在其他网站的站点地图上没有收到 PHP 解析错误...

知道是什么导致了这个错误吗?

最佳答案

你应该检查short_open_tag选项。我看到它的方式,PHP 看到 <?你的一部分 <?xml作为 php 开放标记并生成错误。

关于PHP 在 XML 开始标记上抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40029114/

相关文章:

php - Laravel 5.6 PostGres Json 默认为空

php - 验证应该在 Form 对象或模型中完成吗?

php - 创建基本的用户登录名。 $ _SESSION抛出错误

php - 实现 Zend Framework 2 自动加载器

php mySQL 返回一个空查询

php - 解析 php 网络驱动程序中的错误

php - 解析错误: unexpected '@' symbol in constant function in php

laravel-5 - 不能使用 'PhpParser\Node\Scalar\String' 作为类名,因为它是保留的