7

という名前のファイルを含むファイルが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 解析エラー: 構文エラー、1 行目の sitemap.html の予期しない「バージョン」(T_STRING)

ご覧のとおり、私は使用<?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) でホストされている他の Web サイトがあり、他の Web サイトのサイトマップで PHP 解析エラーが発生しません...

このエラーの原因は何ですか?

4

3 に答える 3

7

オプションをチェックする必要がありshort_open_tagます。私の見方では、PHP は<?あなたの一部を<?xmlphp の開始タグとして認識し、エラーを生成します。

于 2016-10-13T19:16:41.023 に答える
1

前述のとおり、これはshort_open_tag オプションによるものです。

PHP の開始タグの短縮形 ( <? ?>) を許可するかどうかを PHP に指示します。PHP を XML と組み合わせて使用​​する場合は、このオプションを無効にしてinlineを使用できます<?xml ?>。それ以外の場合は、次のように PHP で印刷できます<?php echo '<?xml version="1.0"?>'; ?>。また、無効にした場合は、長い形式の PHP 開始タグ ( <?php ?>) を使用する必要があります。

于 2016-10-13T19:22:37.627 に答える