Window Live Writer 发布日志遭遇 xmlrpc 错误的解决方案

分享本文:
Window Live Writer 发布日志遭遇 xmlrpc 错误的解决方案
请为本文打分

Window Live Writer (简称 WLW)是微软发布的一款免费的博客客户端写作、发布软件。Window Live Writer 支持各种主流的博客软件,比如 WordPress ,只要你的博客程序支持 xmlrpc 协议。不过在使用 Live Writer 发表日志的时候,偶尔会遇到一些错误,其中最常见错误就是 xmlrpc 错误,“服务器响应无效”。今天我们来给大家介绍一下这个问题以及相应的处理办法。

使用 Window Live Writer 发布博客到 WordPress ,最经常遇到 xmlrpc 错误是这样的:

Invalid Server Response

The response to the metaWeblog.newMediaObject method received from the weblog server was invalid:

Invalid response document returned from XmlRpc server

倘若你使用的是中文版的 Window Live Writer ,则是这样的:

服务器响应无效

从日志服务器接收的对 metaWeblog.newMediaObject method 方法的响应无效:

Invalid response document returned from XmlRpc server

即使在 WordPress 官方论坛上,我们也遇到很多 WordPress 遭遇同样的问题;而对于这一问题,并没有确定的原因和解决方案。我们这里将我们所了解的办法,给大家介绍一下,希望能对你有所帮助。

常见的四种情况

  1. 这可能是由于 PHP 版本所引起的问题。解决办法:打开 xmlrpc.php 文件(在wordpress的主目录下),添加如下代码到文件的顶部,<?php 之后:
    $HTTP_RAW_POST_DATA = file_get_contents(“php://input”);
  2. 也可能是由于 .htaccess 规则错误所引起的。解决办法:将如下代码复制到 .htaccess 文件:
    <Files xmlrpc.php>
        SecFilterInheritance Off
    </Files>
  3. 还有可能是由于 WLW 与某个已经安装启用的 WordPress 插件冲突。解决方案:禁用所有的 WordPress 插件,然后逐一启用,可找出具体的插件。
    WordPress 论坛有位网友曾经遇到过 Window Live Writer 与 WordPress Super Cache 插件冲突的情况,下载新的版本即可解决;还有一个网友是因为 Window Live Writer 与插件 NextGEN 冲突,禁用此插件即可。
    因此,如果你遇到 xmlrpc 错误,可以考虑一下是不是最近增加或者修改过某个WordPress插件。
  4. xmlrpc.php 文件中增加了一些代码,调用到一些函数无法执行。解决方案:这个稍微困难一些,你可以使用 Fiddler 来监测 WLW 和你的主机之间的流量,查看都调用了哪些函数,然后找出原因。
    有个网友在使用 Live Writer 上传图片过程中,由于使用的ftp客户端软件将上传的文件名强制修改为小写,也遇到了同样的问题,最后通过这个办法找到了原因:(。

以上四个是解决 Live Writer 的"Invalid server response"错误的常用的办法。

路径错误也会造成同样的问题

昨天我们一个网友网行志,从其他主机迁移到WPChina主机之后,也遇到了同样的问题。不过他的问题并不是由于 xmlrpc 错误造成的,而是主机迁移之后,图片上传文件的路径不一样造成的;因此只要所撰写的博客里有图片,就会遇到 Invalid Server Response

在 WordPress 的后台,有个“选项”->“杂项”,其中有一项是用来设置 WordPress 上传目录,你以后通过 WordPress 直接上传的文件,包括使用 Live Writer 写博客的时候,所上传的图片等附件也直接上传到以上目录中。

默认情况下,WordPress 的上传目录是 wordpress/wp-content/uploads/ 文件夹。但是,WordPress 所记住的并不是相对目录,而是根据服务器不同而生成的服务器上的绝对目录。

比如说,当你的网站在 A 服务器上安装的时候,这个目录有可能是:

/home/username/public_html/wordpress/wp-content/uploads/

而到了 B 服务器上之后,即便是 username 完全一致,也有可能变成了:

/home2/username/public_html/wordpress/wp-content/uploads/

只是一个数字之差,但目录错误,WordPress 就找不到对应的目录,无法上传图片和其他文件,也会引发同样的 xmlrpc 错误。

即使在不更换服务器的情况下,如果你修改了 wordpress 的安装目录,也会引发同样的问题,在这里我们提醒 WordPress 用户务必注意这一点。

针对这一情况,你只需要在 WordPress 的“后台”->“选项”->“杂项”中,输入正确的上传目录即可。假如你使用的 WordPress 默认的目录,那么直接删除这一项的内容,重新保留空白即可。

Window Live Writer 发布日志遭遇 xmlrpc 错误的解决方案
请为本文打分
分享本文:


评论: Window Live Writer 发布日志遭遇 xmlrpc 错误的解决方案

  • 感谢Jiang帮助解决诸多在迁站过程中遇到的问题,这篇教程收藏了,我就准备在WPChina长久驻扎下去了^_^

    SmileSO 2009/12/05 11:31 上午 回复
  • 没用过WLW…

    土豆网 2009/12/10 11:47 上午 回复
  • 路径问题造成错误,是不是在LIVE WRITER 里面先把博客的帐户删除了,再重新建一下,应该就不存在了吧。

    风清 2009/12/14 3:32 下午 回复
  • 我用的 10号主机 我的网站流量超标 登不上了,联系你不上

    qq没上线 手机关机

    麻烦看到消息回复

    刀刀 2009/12/18 1:50 下午 回复
  • 刀刀,前两天回家了,不好意思啊;已经给你处理了 🙂

    Jiang 2009/12/19 10:55 上午 回复
  • 风清,这个要修改wp的路径,不是live writer里的信息,删除重建也没有用的

    Jiang 2009/12/19 10:56 上午 回复
  • 我也碰到了这个问题,不过我的解决方法是:
    这是因为wordpress本身的一个bug,在utf-8编码下,在wp-includes文件夹下, xml-rpc返回的格式不正确,缺了三个字节,要修正这个问题,按如下操作即可:
    用一个文本编辑工具打开class.ixr.php,查找:
    $length = strlen($xml);

    替换为:

    $length = strlen($xml)+3;

    就可以解决这个问题了!

    aviton 2009/12/27 11:23 上午 回复
  • 谢谢楼主的分享,很有用!

    无名 2009/12/30 9:27 上午 回复
  • 谢谢博主的帮助!

    无名 2009/12/31 10:24 上午 回复
  • 我的办法是在根目录建立一个php.ini文件,内容就写memory=20MB,保存后上传,直接搞定!

    明月登楼 2011/03/27 8:12 下午 回复
  • 我更换了空间后,远程发布选项都没有了!

    红酒知识 2013/01/27 2:19 下午 回复
  • Pingback: Window Live Writer 发布日志遭遇 xmlrpc 错误的解决方案 – ztk sky

发表一下评论

电子邮件地址不会被公开。 必填项已用*标注