に投稿 コメントを残す

Windows Live Writerエラー 「ブログ サーバーから受信した metaWeblog.getRecentPosts メソッドへの応答が無効です。」

Pocket
LINEで送る

 

他のことでは不便を感じないのだが、MacのMarsEditとWindows Live Writerを、WordPress管理画面を通して、受け渡しが出来なくて、放置していた「ブログ サーバーから受信した metaWeblog.getRecentPosts メソッドへの応答が無効です。」エラーに対処しようと奮闘いたしました。

Windows Live Writer「ブログ サーバーから受信した metaWeblog.getRecentPosts メソッドへの応答が無効です。」エラー

症状

Windows Live Writerから、WordPress管理画面に下書き保存されている投稿を取得しようとすると、「ブログ サーバーから受信した metaWeblog.getRecentPosts メソッドへの応答が無効です。」というエラーメッセージが出る。

ログファイルを見ると、「Invalid response document returned from XmlRpc server」とある。

幾つか試してみると、WordPressのマルチ化した子サイト全てが、エラーが出るのではなく、幾つかが上手く行かない。

ログファイルの見方

 Windows Live Writer ログファイル参照

ヘルプから「バージョン情報」参照。

Windows Live Writer ログファイルの参照

現れたバージョン情報ウィンドウ の「ログファイルの表示」をクリック。

Windows Live Writer ログファイルの参照02

 

Windows Live Writer.logを開く。
.log.oldとなっているのは、それ以前のログです。

検索してみると

検索のヒント

こういうエラーの場合、エラーメッセージそのもので、検索してみる。

ただし、User/Kazuoとなっているような固有な単語は省く。

多くのログから、どれがエラーを表わしているかは、丁寧に読み、あとは感。





 

下記WordPressのサポート・フォーラムを見ると、幾つか、解決策が提案されています。

実際に、解決策を、ご利用される場合は、ご自身の責任において行ってください。

1.xmlrpc.phpファイルの関数mw_newPost() 関数の途中約この行は間違っており、「未定義関数」コールとして定義されている。

logIO(’O', ‘Post cats: ‘ . printr($catnames,true));

となっているprintrを正しい関数、print_rに訂正せよ。

logIO(’O', ‘Post cats: ‘ . print_r($catnames,true));

2.mod_securityをを伝えるためにあなたの.htaccessファイルにこれを追加してみてください。

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

.htaccessのある場所

.htaccess は、存在しない場合もあるのですが、もしあれば、WordPressをインストールした直下に存在します。

WordPress › Support » invalid response document returned from XmlRpc server

 

WordPress.orgの辞典とも言えるWordPress Codexには、この「ブログ サーバーから受信した metaWeblog.getRecentPosts メソッドへの応答が無効です。」に関して2つの対処法が掲載されていました。

残念ながら、その内の一つは意味がわかりませんでした。

1.ブログを設置しているサーバーが、PHP5.2.2を使っていれば、xmlrpc.phpファイルの先頭に次の行を追加せよ。

$HTTP_RAW_POST_DATA = file_get_contents(“php://input”);

調べてみると、僕が利用しているロリポップのサーバーのPHPは、5.2のようです。

ロリポップ!ユーザー専用ページ - PHP設定

どうも、この解決法が、僕の場合、フィットしているようです。

xmlrpc.phpがある階層

同じくxmlrpc.phpファイルは、WordPressをインストールした直下に存在します。

2.pre, script や style tagsがあると、Windows Live WriterでWordPressの投稿を開くことができない。

ベータ3で修正。

3.サブドメインのWordPressマルチサイト(○○○.example.com)、ドメインマッピングを使っている場合、○○○.example.com/xmlrpc.phpを使いなさい。

確かに、僕は、マルチサイトで利用しているのですが、エラーメッセージが違うようだ。

エラーメッセージ

You signed in successfully with a blog account, but you do not have a blog with this service provider. Check with the blog service provider and then try again.




翻訳

あなたはブログアカウントで正常にサインインしますが、このサービスプロバイダにブログを持っていない。ブログサービスプロバイダに確認してから、再試行してください。

 さすがは、Codex。

Windows Live Writer Help « WordPress Codex

早速、xmlrpc.phpに追記してみます。

 xmlrpc.phpファイルの修正

コピペなどでxmlrpc.phpファイルの一番上に、追記してみてください。

 その際、メモ帳などは、お使いにならないでください。

無料のものでしたら、TeraPad – 窓の杜ライブラリ.などのエディタを、お使いください。

保存し、もとの階層に、アップロード。

試してみても、結果は変わらず。
しばらく時間をおいてみても同じ。

 16 進数値 0x00) は無効な文字です。 行 2521、位置 83 です。

 というエラーメッセージが怪しいのですが、ググってみても何のことやらさっぱり。

ファイルを検索してみても、「logIO(’O’, ‘Post cats: ‘ . printr($catnames,true));」のような項目はない。

xmlrpc.phpファイルをよく見てみると、サイトURLにより、違いはなさそうだ。

なので、xmlrpc.phpファイルをコピペし、新たに○○○.ki.blog/xmlrpc.phpを作成。

保存しようとしたら、「/(スラッシュ)」が邪魔して保存できない。

○○○.ki.blogというフォルダなんて存在しないし、ん~わからん。

エラーメッセージ

WindowsLiveWriter,1.6216,None,00013,03-Apr-2015 21:12:04.669,”DisplayableException occurred: WindowsLive.Writer.Extensibility.BlogClient.BlogClientInvalidServerResponseException: サーバーの応答が無効です – ブログ サーバーから受信した metaWeblog.getRecentPosts メソッドへの応答が無効です。

Invalid response document returned from XmlRpc server
場所 WindowsLive.Writer.BlogClient.Clients.XmlRpcBlogClient.CallMethod(String methodName, XmlRpcValue[] parameters)
場所 WindowsLive.Writer.BlogClient.Clients.MetaweblogClient.GetRecentPosts(String blogId, Int32 maxPosts, Boolean includeCategories)
場所 WindowsLive.Writer.BlogClient.Blog.GetRecentPosts(Int32 maxPosts, Boolean includeCategories)
場所 WindowsLive.Writer.PostEditor.RemoteWeblogBlogPostSource.GetPosts(RecentPostRequest request, Boolean getPages)
場所 WindowsLive.Writer.PostEditor.RemoteWeblogBlogPostSource.GetRecentPosts(RecentPostRequest request)
場所 WindowsLive.Writer.PostEditor.OpenPost.BlogPostListBox.GetRecentPostsAsyncOperation.DoWork()
場所 WindowsLive.Writer.CoreServices.AsyncOperation.InternalStart()”,””
WindowsLiveWriter,1.6216,None,00014,03-Apr-2015 22:21:31.532,”Exception parsing XML-RPC response:

WindowsLive.Writer.CoreServices.XmlRpcClientInvalidResponseException: Invalid response document returned from XmlRpc server —> System.Xml.XmlException: ‘.’ (16 進数値 0x00) は無効な文字です。 行 2521、位置 83 です。
場所 System.Xml.XmlTextReaderImpl.Throw(Exception e)
場所 System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
場所 System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String[] args)
場所 System.Xml.XmlTextReaderImpl.ThrowInvalidChar(Int32 pos, Char invChar)
場所 System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
場所 System.Xml.XmlTextReaderImpl.ParseText()
場所 System.Xml.XmlTextReaderImpl.ParseElementContent()
場所 System.Xml.XmlTextReaderImpl.Read()
場所 System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
場所 System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
場所 System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
場所 System.Xml.XmlDocument.Load(XmlReader reader)
場所 System.Xml.XmlDocument.LoadXml(String xml)
場所 WindowsLive.Writer.CoreServices.XmlRpcMethodResponse..ctor(String responseText)
— 内部例外スタック トレースの終わり —
場所 WindowsLive.Writer.CoreServices.XmlRpcMethodResponse..ctor(String responseText)
場所 WindowsLive.Writer.CoreServices.XmlRpcClient.CallMethod(String methodName, XmlRpcValue[] parameters)

突然、以下のようなメッセージが現れ、ログイン情報を要求してくる。




Windows Live Writer エラー

 この記事を書いている間も度々、ログアウトする。
最近、急速にTwitterで、外国人のフォロワーが増えた。

ロリポップで、自分のIPアドレスからしか、WordPressのログイン画面が現れないように設定しているのが、とても不安だ。

 xmlrpc.phpファイルに追記した[$HTTP_RAW_POST_DATA = file_get_contents(“php://input”);]を削除すると、上記のエラーメッセージは、現れなくなるが、振り出しに戻っただけだった。

今日は断念。

一応、サーバーのPHPの設定を、5.3にするが、結果は同じ。

同じくロリポップのサーバーの管理画面のphp.iniの設定画面でdefault_charsetをUTF-8にするが変わらず。

(Visited 577 times, 1 visits today)
Pocket
LINEで送る

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください