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 错误的解决方案

  • 感谢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

发表一下评论

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

Menu Title