サポート » 使い方全般 » 同一ドメインのスクリプトからフィードを取得したい

  • 解決済 mitsumotocs

    (@mitsumotocs)


    WordPress初心者です。よろしくお願いします。

    【環境】
    WindowsXP / Apache2.2 / PHP5.2.13 / WordPress3.2.1

    【やりたい事】
    同一ドメイン、同一ディレクトリ上にあるスクリプト(feedreader.phpとします)でWordPressの出力するRSSを取得、パースして表示したい。
    具体的には、WordPressとは無関係のページから同一ドメイン上にあるWordPressのRSSを取得し、新着記事のヘッドラインとして表示する…といった感じです。

    【問題】
    feedreader.php内で単純に以下のようにしても、取得されるのはPHPスクリプトそのもののようで、XMLのパースエラーとなってしまいます。
    $xml = new SimpleXMLElement('wp-rss2.php', null, true);

    テストとして、上記フィードが出力したXMLを静的なXMLファイル(test.xml)として保存し、以下のようにすると意図通りに取得できます。(当然ですが…)
    $xml = new SimpleXMLElement('test.xml', null, true);

    なにか実現方法はございませんでしょうか?
    初歩的な問題かもしれませんが、ご意見をお伺い出来ればと思います。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    mitsumotocsさん、こんにちは。

    wp-rss2.phpではなく、RSSのURLではだめですか?

    トピック投稿者 mitsumotocs

    (@mitsumotocs)

    jim912さま

    お返事ありがとうございます。
    RSSのURLとは、http://example.com/?feed=rss2 のことでしょうか?
    こちらを絶対パスで指定すると何も返ってこなくなり、ブラウザが2分くらい(PHPのmax_execution_time分)読み込み中になったあと、以下のエラーが出て停止します。

    SimpleXMLElement::__construct() [simplexmlelement.--construct]: I/O warning : failed to load external entity

    ただ、これは以下のようにしても同様にエラーとなるため、同一ドメインから絶対パス指定はできないものと認識しておりますが…そういうものなのでしょうか?

    file_get_contents('http://example.com/?feed=rss2')

    モデレーター jim912

    (@jim912)

    mitsumotocsさん

    file_get_contentsで失敗するとなると、利用環境でphpのallow_url_fopenが不許可になっているか、ローカルネットワーク内でのドメインの名前解決ができていないかだと思われます。

    前者はphpの設定自体を変更する必要があります。後者ならばサーバのhostsファイルなどにローカルIPとドメインの記述を追加してローカルIPでの名前解決ができるようにすれば大丈夫です。

    トピック投稿者 mitsumotocs

    (@mitsumotocs)

    jim912さま

    ご指摘のとおりローカルで名前解決ができていないだけでした。(WordPress云々以前の問題でしたね…申し訳ありません)
    hostsファイルにIPとドメインを追記したら意図したとおりに動作いたしましたのでこれにて解決とさせていただきます。
    ありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「同一ドメインのスクリプトからフィードを取得したい」には新たに返信することはできません。