ホーム > フォーラム > 質問箱 > WeBlogのRSSでエラー

WeBlogのRSSでエラー
投稿者: Ho-ri-Net | 投稿日時: 2005-9-19 1:10 | 閲覧: 18899回
Ho-ri-Net
エラー個所を見ましたが原因がよくわかりません。対処方法をご存知の方、アドバイスをお願いします。

環境は、
OS: Windows2000
Web Service: IIS
WeBlog 1.41

XOOPS 2.0.12 JP : ユーザー名に漢字など使用OK

アドバイス、よろしくお願いします。
エラー内容は以下の通りです。


引用:
XML ページを表示できません
XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。
------------------------------------------------------------
テキストの内容に無効な文字が見つかりました。リソース 'http://xoopssv/modules/weblog/backend_weblog.php' の実行エラーです。ライン 10、位置 15



引用:
XML ページを表示できません
XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。
------------------------------------------------------------
テキストの内容に無効な文字が見つかりました。リソース 'http://xoopssv/modules/weblog/weblog-rdf.php' の実行エラーです。ライン 8、位置 21



コメント(19)

Re: WeBlogのRSSでエラー 
投稿者: okuhiki | 投稿日時: 2005-9-19 1:53
okuhiki
文字コードがUTF-8と指定されているのにEUC-JPで書き出されていますね。
phpのmbstringの設定を確認されてはいかがでしょうか。

ちなみに私のiis6,php4.3.10での設定は、
Multibyte Support                enabled  
Japanese support                 enabled  
HTTP input encoding translation  enabled  
Multibyte (japanese) regex       support

mbstring.detect_order            auto 
mbstring.encoding_translation    On 
mbstring.func_overload           0 
mbstring.http_input              auto 
mbstring.http_output             pass 
mbstring.internal_encoding       EUC-JP
mbstring.language                Japanese
mbstring.substitute_character    no value
です。

xhldでの問題も同じ原因かも。
Re: WeBlogのRSSでエラー 
投稿者: Ho-ri-Net | 投稿日時: 2005-9-19 2:14
Ho-ri-Net
引用:

mbstring.detect_order auto
mbstring.encoding_translation On
mbstring.func_overload 0
mbstring.http_input auto
mbstring.http_output pass
mbstring.internal_encoding EUC-JP
mbstring.language Japanese
mbstring.substitute_character no value[/code]

↑の設定はphp.iniで行ないました。(設定変更を反映させる方法ってど〜したらいいのですか?)

もし、何にもしないで設定が反映されるなら、問題は解決されてません。
Re: WeBlogのRSSでエラー 
投稿者: okuhiki | 投稿日時: 2005-9-19 2:40
okuhiki
サービスから、IISの再起動が必要だったと思います。
IISマネージャからの再起動でも良いかも。
再起動後に、phpinfo関数を使ってphpの設定状況を確認されてはいかがでしょう。
phpinfoについては、「phpのマニュアル」を参考にされると良いと思います。
----- 追加 -----
phpやhtmlに変更を行なった時にファイルの保存は、EUC-JPにて行なわないと、phpが正常に文字コードの判別が出来ない可能性も有りますね。
Re: WeBlogのRSSでエラー 
投稿者: Ho-ri-Net | 投稿日時: 2005-9-19 2:59
Ho-ri-Net
IISを再起動させましたがダメでした。
PHPの問題だけではないと言う事でしょうか?
Re: WeBlogのRSSでエラー 
投稿者: okuhiki | 投稿日時: 2005-9-19 10:33
okuhiki
引用:
IISを再起動させましたがダメでした。
とは、
1) IISの再起動が行なえなかった。
2) php.iniの設定が反映されなかった。
3) 設定は反映されたが、文字化けが発生する。
どのダメだったのか(上記以外のダメも考えられますが)私には判りませんが、テスト用にまっさらなxoopscubeと該当モジュールのインストールを行い、挙動の確認を行われてはいかがでしょうか。
Re: WeBlogのRSSでエラー 
投稿者: Ho-ri-Net | 投稿日時: 2005-9-19 12:35
Ho-ri-Net
新規にやってもみましたが無理でした。

WeBlogは、1.42RC2a のバージョンにアップしたら正常に動作しました。あとは、xhld0の文字化けだけです。。。

WeBlog 1.41 にはRSSのバグがあったのでしょうか。。。 f(^^;
Re: WeBlogのRSSでエラー 
投稿者: LifeGooD | 投稿日時: 2005-11-28 18:24
LifeGooD
同様の事象のように思えますので、返信させて頂きます。

私の環境は、
OS: Fedora Core 3
Web Service: Apache
WeBlog 1.42

XOOPS 2.0.12 JP

WeblogのRSS表示で同様のエラーが出力されます。

引用:

XML ページを表示できません
XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。


--------------------------------------------------------------------------------

終了タグ 'item' が開始タグ 'title' と一致していません。リソース 'http://192.168.0.242/xoops/modules/weblog/backend_weblog.php' の実行エラーです。ライン 27、位置 7


------^




一方で、RDFの方は問題なく表示できています。

引用:


-

〜略〜



この事象から判断するに、okuhikiさんのご指摘のあった文字コードによる出力エラーの可能性は低いのではないかと思えます。

しかしながら、解決の糸口が見えたわけではないのですが・・・
アドバイス宜しくお願い致します。
Re: WeBlogのRSSでエラー 
投稿者: okuhiki | 投稿日時: 2005-11-28 18:49
okuhiki
rssのソースを見ていないので推測です。
• templateの編集を行なって要素の入れ子が食い違っている。
• 文字化けで終了タグが終了タグとして認識されていない。
などが原因かなと推測します。

firefoxなどでXML文書のソースが表示可能なブラウザでエラーの該当行付近を確認されてはいかがでしょう。
御書きのエラー表示はIEですね。IEでXML文書のソースは標準では表示出来ませんから注意してね。
Re: WeBlogのRSSでエラー 
投稿者: LifeGooD | 投稿日時: 2005-11-29 11:48
LifeGooD
早速の返信をありがとうございます。

引用:

okuhikiさんは書きました:

firefoxなどでXML文書のソースが表示可能なブラウザでエラーの該当行付近を確認されてはいかがでしょう。
御書きのエラー表示はIEですね。IEでXML文書のソースは標準では表示出来ませんから注意してね。


おっしゃる通りIEで確認しておりましたので、Firefoxで再確認してみました。
実はRSSだけでなくRDFでもパースエラーが発生していた模様です。

引用:

weblog/backend_weblog.php

XML パースエラー: 整形式になっていません
URL: http://192.168.0.242/xoops/modules/weblog/backend_weblog.php
行番号: 4, 列番号: 22:
Lifegood
--------------------^


引用:

/weblog/weblog-rdf.php

XML パースエラー: 整形式になっていません
URL: http://192.168.0.242/xoops/modules/weblog/weblog-rdf.php
行番号: 113, 列番号: 1:


templateの編集を行なってはいないので、okuhikiさんはのおっしゃる通り「文字化けで終了タグが終了タグとして認識されていない。」の線が濃厚かなっとは思っております。


ここで疑問なのですが、
php.iniのmb_stringにおいてEUCをデフォルトに設定しておりますが、RSS・RDFの文字コードはUTF-8をテンプレート上で指定しております。

この不整合が本エラーを引き起こしているのでしょうか?
私としては、RSS・RDF側ではただエンコードを指定しているだけなので、原因とはあまり思えないのですが、、。
Re: WeBlogのRSSでエラー 
投稿者: zephyr | 投稿日時: 2005-11-29 13:49
zephyr
フォーラムがまたがって恐縮なのですが、トラブルシューティングでのスレッド

http://xoopscube.jp/modules/xhnewbb/viewtopic.php?topic_id=999&forum=5

にて、当方も質問し、Ver 1.42 で解決済と思っていますが、もし、パースエラーがでるなら、okuhiki さんの投稿が参考になります。

ちなみに、修正前には、IE も、火狐も XML は普通に表示されました。上記スレッドに書きましたが、Validate には、検証サイト

http://www.feedvalidator.org/

が役に立ちます。そこでの結果によると、余分なワーニング出力が原因で、UTF-8 へのコーディング変換は、PHP 側 EUC でうまくいくはずですので、あまりコード設定は変更しないほうがよいと思います。
Re: WeBlogのRSSでエラー 
投稿者: okuhiki | 投稿日時: 2005-11-29 14:55
okuhiki
<title>Lifegood
titleの内容が「Lifegood」であれば、
<title>Lifegood</title>
と成っていればXMLパースエラーが無くなると思われます。
文字化けではなくそもそもの変数$channel_titleに存在してはいけない文字列が混入していると推測出来ますね。

sitenameや記事の題名に記号などを使用されていませんか。
使用されるのであれば文字実体参照や数値実体参照を行われると良いと思います。
Re: WeBlogのRSSでエラー 
投稿者: LifeGooD | 投稿日時: 2005-12-1 19:15
LifeGooD
zephyrさん、okuhikiさん
コメントどうもありがとうございます。


<title>Lifegood
---------------^


調査したところ、上記ポイントに挿入される文字列は日本語でした。また、記号等も使用しておりませんでしたので、文字コードに原因があるのではないかと推測しました。

そこで、HTTPヘッダー情報を取得し、
「なぜRDFは表示されるのに、RSSはパースエラーとなるのか?」
について検証してみました。



RDF レスポンス Header
(パースエラーなし)

Date: Thu, 01 Dec 2005 09:57:01 GMT
Server: Apache/2.0.52 (Fedora)
X-Powered-By: PHP/4.3.11
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 2635
Connection: close
Content-Type: application/xml; charset=utf-8

200 OK



RSS レスポンス Header
(パースエラー)

Date: Thu, 01 Dec 2005 09:55:55 GMT
Server: Apache/2.0.52 (Fedora)
X-Powered-By: PHP/4.3.11
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 2518
Connection: close
Content-Type: text/xml; charset=EUC-JP

200 OK


何故こうなるのかは不明ですが、
HTTP Header内で送付されてくる文字コードに違いがあるようです。
これが原因となり、日本語文字コードの問題でパースエラーが発生してしまっているようです。

Content-Type:もtextとapplicationで違いがありますね。
確かこちらはどこかで話題に登りましたっけ・・・

しかしながら、RDFでパースエラーが発生していないことから、環境に依存した問題でもないようにも思えます。

皆さん、どう思われますか?
Re: WeBlogのRSSでエラー 
投稿者: LifeGooD | 投稿日時: 2005-12-1 20:59
LifeGooD
自己レスです。

backend_weblog.php内を再度見ていたところ、header表記が2箇所ありました。

引用:

header ('Content-Type:text/xml; charset=utf-8');

header('Content-type: application/xml; charset=utf-8');


そこで、RDFのHTTPヘッダーに合わせる形で、上段のheaderをコメントアウトしたところ、正常に稼動しました。
ちなみにheader表記が2箇所ある理由は、よく理解しておりません。

引用:

header ('Content-Type:text/xml; charset=utf-8');

//header ('Content-Type:text/xml; charset=utf-8');



一部の環境でしか発生しない問題だとは思うのですが、一応上記対応で対応可能なようです。
以上、ご報告まで。
Re: WeBlogのRSSでエラー 
投稿者: min_o | 投稿日時: 2005-12-6 21:17
min_o
Weblog(1.42)をインストールしたのですが、RSS配信がうまくいかず困っています。ファイルをダウンロードしても、中身がなく真っ白なのです。
RDFのほうは問題なく書き出されています。

テンプレートをいろいろいじったためかと、デフォルトのテンプレートに戻してみましたが、結果は同じでした。

過去ログを拝見して、
WeBlog/backend_weblog.php
の下から2行目をコメントアウト
//header('Content-type: application/rss+xml');
してダウンロードせずにブラウザ表示させてみましたが

引用:

XML ページを表示できません
スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。
-----------------------------------------------------------------
XML ドキュメントには最上位の要素を指定する必要があります。リソース 'http://prevo.jp/hirameki/modules/weblog1/backend_weblog.php' の実行エラーです。



と表示されます(ブラウザはIE)。
過去ログから似たエラー文の対処をみてみましたが、知識不足でよくわかりませんでしたorz

よろしくご教授おねがいします(T.T)
Re: WeBlogのRSSでエラー 
投稿者: zorac | 投稿日時: 2005-12-7 13:15
zorac
下から2行目ではなくもう一つの方のheader文をコメントアウトです。
Content-typeがtextだとmb_http_output mb_output_handlerで文字コード変換が行われてしまいますので、Content-typeがapplicationのheader文を残してtextの方をコメントアウトしなければいけません。
Re: WeBlogのRSSでエラー 
投稿者: min_o | 投稿日時: 2005-12-7 18:04
min_o
zoracさん
解答ありがとうございます。

引用:

zoracさんは書きました:
下から2行目ではなくもう一つの方のheader文をコメントアウトです。
Content-typeがtextだとmb_http_output mb_output_handlerで文字コード変換が行われてしまいますので、Content-typeがapplicationのheader文を残してtextの方をコメントアウトしなければいけません。


58行目
//header ('Content-Type:text/xml; charset=utf-8');
をコメントアウトすると、エラーはでなくなりましたが
ダウンロードファイルはやはり何もない真っ白なファイルです。

下から2行目のheaderと、上記の二行ともコマンドアウトすると
ブラウザ表示ですが、空白ページです。(IE FireFoxとも)

なにが原因なんでしょうか??
Re: WeBlogのRSSでエラー 
投稿者: sljfen | 投稿日時: 2005-12-8 15:45
sljfen
こんにちは。

私も同じ現象が発生したので、解決法を探そうとここにたどり着いた。

引用:

58行目
//header ('Content-Type:text/xml; charset=utf-8');
をコメントアウトすると、エラーはでなくなりましたが
ダウンロードファイルはやはり何もない真っ白なファイルです。

下から2行目のheaderと、上記の二行ともコマンドアウトすると
ブラウザ表示ですが、空白ページです。(IE FireFoxとも)


両方ともコマンドアウトすると、エラーになると思います。

私の場合は、
header ('Content-Type:text/xml; charset=utf-8');

だけを削除したら、うまくできました。


関係があるかどうか分からないけど、サーバの設定内容は次のようになります。

mbstring.http_output       EUC-JP
mbstring.internal_encoding    EUC-JP

うまくいくように。
Re: WeBlogのRSSでエラー 
投稿者: zorac | 投稿日時: 2005-12-8 16:30
zorac
情報が少ないのでなんともいえませんが、コメントアウトを元に戻しても真っ白になりませんか?
色々コードをいじってしまった時は変更ミスを残したままになりがちですので、一度モジュールを入れ直してみては如何でしょう。

それでも真っ白になるなら、PHPのバージョンの違いでmb_http_outputを'pass'にする必要があるかも。
Re: WeBlogのRSSでエラー 
投稿者: min_o | 投稿日時: 2005-12-9 19:18
min_o
sljfenさん zoracさん
レスありがとうございました。

zoracさんの提案に従い、weblogをもう1つインストールしてみました。
すると、二つ目のweblogは何もカスタマイズしなくてもRSSは問題なく作成されました。
二つ目のweblogのbackend_weblog.phpをダウンロードして、一つ目のweblogのものと、入れ替えたら、一つ目の方も無事にRSSが作成されました。

みなさまありがとうございます。

実は本番用、テスト用などでxoopsとweblogをつごう3つのサーバー(2つはlolipop、1つは英語サーバー)にインストールしたのですが、その全てで同じ現象が発生していたのです。
(すべて同じ方法でなおりました)

三つともweblogはインストール時に番号を付けてweblog1としていました。
(二つ目のインストールは番号なしのweblog)
最初のインストールに余計な番号を付けたのが問題なのかとも、思うのですが、どうなんでしょう?

    投票(0)

    新しいものから | 古いものから | RSS feed
     


    概要 | ダウンロード | ニュース | フォーラム | 開発情報 | ツール | テーマ | モジュール
    お問い合わせ | プライバシーポリシー
    Copyright © 2001-2009 XOOPS Cube日本サイト