フォーラム

[解決済み] 2.8.6へアップグレードしたところRSSがエラーを表示する (6 件の投稿)

  1. show555
    メンバー
    2 years前の投稿 #

    最新リリースのwordpress2.8.6日本語版に自動アップグレードしたところ、
    2.8.5では正常に吐きだされていたRSSが

    XML パースエラー: 実体の初めに XML またはテキスト宣言がありません。
    URL: http://www.sample.com/feed/
    行番号: 2, 列番号: 1:<?xml version="1.0" encoding="UTF-8"?>
    ^

    と表示され参照できなくなってしまいました。
    プラグインのせいかと思い全てのプラグインを停止させてもエラーは出たままで、
    テーマを無改造の「default」にしても結果は同じでした。
    どなたか同じような状況になって改善できた方がいらっしゃれば
    ご教授よろしくお願いいたします。

  2. djcomkato
    メンバー
    2 years前の投稿 #

    1回だけ同様の経験(バージョンアップのタイミングではありません)がありました。

    このパースエラーの時は「余分な文字列(改行等)が先頭に入っている時」との情報があったので、 header.php, index.php を確認しましたが、余分な文字等は入っていません。
    他に情報らしい情報も無いので、試しに、header.php の先頭にある <?php get_header(); ?> 前後に改行入れてから削除してみたところ、改善してしまいました。
    何か見えないコード等が入っていたのかな?と推測しています。

    たった1回しか経験がなく、しかもこの操作自体適当に操作したら直ってしまったレベルなのであまり参考にならないかもしれませんが、大した作業ではないので、index.php等も含めて試してみては如何でしょうか

  3. show555
    メンバー
    2 years前の投稿 #

    djcomkatoさん
    こんにちは、ご返事ありがとうございました。

    フォーラムに投稿後、自分でも調べていた際に、
    djcomkatoさんがおっしゃっていたように
    「余分な文字列(改行等)が先頭に入っている時」に起こるという記事を見つけ、
    実際にFeed Validatorというサイトで検証したところ、
    XMLの記述の最初に半角の空白が2個入っていました。
    なのでエラーの理由はこれで間違いないと思います。

    しかし原因になりそうなサイト内のheader.phpやwp-rss.php等の
    phpファイルを一通りチェックしたのですが、
    原因となる空白を見つけられず行き詰っております。

  4. Kuraishi
    管理者
    2 years前の投稿 #

    WordPress Exploit Scanner の ファイルハッシュ比較機能を使えば、不完全にアップグレードされたファイルを見つけることができると思いますので、試してみてはいかがでしょうか。
    日本語版の対応については、日本語版用 Exploit Scanner ハッシュファイルを見てください。

    手順:

    1. 以下、ミニマム選択で実行(← これでも重いので注意)

      Scans to execute: File scan のみチェック
      Severities to show: Blocker のみチェック

    2. 本来のパッケージ内容と異なっているファイルがあれば Description に altered core file と書かれて表示される
  5. djcomkato
    メンバー
    2 years前の投稿 #

    しかし原因になりそうなサイト内のheader.phpやwp-rss.php等の
    phpファイルを一通りチェックしたのですが、
    原因となる空白を見つけられず行き詰っております。

    まさにその状態でした。
    そこで、逆転の発想で「どのファイルに改行を入れれば同じ問題が発生するか?」を調べようと、index.phpやらheader.phpやらfunction.phpやらに改行を入れてみたわけです。

    改行挿入してRSSソース内で余分な改行が増えているのを確認後、その挿入した改行を消したら、今まで入っていた余分な改行も消えて問題も解決してしまいました。
     
    いっぺんに複数ファイル編集してしまったので犯人特定していませんが、結果から「先頭の方に表示されない文字コードが挿入されていたのだろう」と推測しています。

    # 最初の返信で「header.phpを編集したら直った」と書きましたが、
    # 実はちゃんと覚えてません m(_ _)m

  6. show555
    メンバー
    2 years前の投稿 #

    tenpuraさん、djcomkatoさん、
    返事が遅くなってしまいましたがアドバイスありがとうございました。

    あれからみなさんのアドバイスを元にいろいろ試してみたのですが
    結果だけ言うとフィードのエラーが出なくなりました!
    しかし原因の部分の特定ができないまま、とりあえず直ったという感じです。
    (djcomkatoさんと似たような状態)

    以下参考になるかわかりませんが自分が試してみたことを
    順を追って書いてみたいと思います。

    1.wordpressの本体にエラーの原因がないかチェック
    tenpuraさんのアドバイスの

    WordPress Exploit Scanner の ファイルハッシュ比較機能を使えば、不完全にアップグレードされたファイルを見つけることができる

    ということでWordPress Exploit Scannerをインストールしwordpressの本体をチェック
    ⇒問題なし

    2.wordpressの本体は問題ないのでテーマ内のテンプレートを見直し

    • テーマをカスタム前のまっさらなものに入れ替え
    • カスタムした部分を記述し直し
    • アップロード前に各テーマの構成ファイルがエンコーディングutf-8か確認
    • テーマの中身を再アップロード

    以上の作業でエラーが出なくなったのでやはり原因はテーマの中にあったように思われます。
     
     
     
    しかし以下の点が未だに原因がわかりません

    • テーマを一切変更していないdefaultにしてもエラーがでた
    • 2.8.5の時はエラーが起きず2.8.6にアップデートした際にでた

    矛盾点が多く釈然としませんがとりあえず直ったので報告致しました。
    アドバイスしてくださった皆様ありがとうございました。

返信

ログイン しなければ投稿できません。

About this Topic