您的位置:首页 > 其它

解决wordpress无法离线发布(远程发布)的故障

2011-03-25 18:54 225 查看
使用wordpress mu3.0与3.1时,不知道什么原因,只要开户了WORDPRESS的MU选项,Zoundry Raven和Windows Live Writer就无法注册账户成功(之前在Zoundry Raven里建好的账号还能收发,但不能新建)。在Zoundry Raven上表现为:输入BLOG主地址后,能进入下一步,也能自动出来wordpress的API,但填好所有选项后,下一步便报错了:

“Error fetching list of blogs”,细节如下:

zoundry.blogpub.xmlrpc.xmlrpcserverimpl.ZXmlRpcException: {ZBlogServerException['xmlrpcapi.getbloglist' type:Publishing Error, code:0 msg:xmlrpcapi.blog_list_unavailable_error]}

at zoundry\\blogpub\\xmlrpc\\xmlrpcserverimpl.pyo:267 [_getUserBlogs()]  ->  None

at zoundry\\blogpub\\xmlrpc\\xmlrpcserverimpl.pyo:1217 [_getUserBlogs()]  ->  None

at zoundry\\blogpub\\xmlrpc\\xmlrpcserverimpl.pyo:251 [getBlogs()]  ->  None

at zoundry\\blogapp\\services\\pubsystems\\blog\\xmlrpc.pyo:13 [_listBlogs()]  ->  None

at zoundry\\blogapp\\services\\pubsystems\\blog\\blogpublisher.pyo:508 [listBlogs()]  ->  None

at zoundry\\blogapp\\models\\ui\\wizard\\newpublishersitemodel.pyo:52 [listBlogs()]  ->  None

at zoundry\\blogapp\\ui\\wizards\\publishersitewizard.pyo:516 [_runTask()]  ->  None

Caused By:

zoundry.blogpub.xmlrpc.xmlrpcserverimpl.ZXmlRpcException: {ZBlogServerException['xmlrpcapi.getbloglist' type:Publishing Error, code:0 msg:xmlrpcapi.blog_list_unavailable_error]}

at zoundry\\blogpub\\xmlrpc\\xmlrpcserverimpl.pyo:267 [_getUserBlogs()]  ->  None

at zoundry\\blogpub\\xmlrpc\\xmlrpcserverimpl.pyo:1217 [_getUserBlogs()]  ->  None

at zoundry\\blogpub\\xmlrpc\\xmlrpcserverimpl.pyo:251 [getBlogs()]  ->  None

at zoundry\\blogapp\\services\\pubsystems\\blog\\xmlrpc.pyo:13 [_listBlogs()]  ->  None

at zoundry\\blogapp\\services\\pubsystems\\blog\\blogpublisher.pyo:508 [listBlogs()]  ->  None

at zoundry\\blogapp\\models\\ui\\wizard\\newpublishersitemodel.pyo:52 [listBlogs()]  ->  None

at zoundry\\blogapp\\ui\\wizards\\publishersitewizard.pyo:516 [_runTask()]  ->  None

Thread: [ZWizardTaskThread]

Thread: [ZWizardTaskThread]


干干净净安装了一台CENTOS,APACHE,PHP,MYSQL,WORDPRESS后

,未出现上述问题。对两者抓包后发现:

发送的的POST包如下:

POST /xmlrpc.php HTTP/1.1

Host: blog.sjhf.net

Accept-Encoding: identity

User-Agent: Zoundry Raven (www.zoundry.com); zpypatch.xmlrpclib.py/1.0.1

Content-Type: text/xml; charset=UTF-8

Content-Length: 329

blogger.getUsersBlogs

urn:zoundry.com:raven:pub:xmlrpc:metaweblog:wordpress

admin

********


如正确执行,返回值为:
HTTP/1.1 200 OK

Date: Fri, 04 Mar 2011 09:01:47 GMT

Server: Apache/2.2.3 (CentOS)

X-Powered-By: PHP/5.1.6

Connection: close

Content-Length: 641

Content-Type: text/xml

isAdmin1

urlhttp://blog.sjhf.net/

blogid1

blogName北亚数据恢复博客

xmlrpchttp://blog.sjhf.net/xmlrpc.php


而错误的返回结构为:

HTTP/1.1 200 OK

Date: Fri, 04 Mar 2011 05:54:05 GMT

Server: Apache/2.2.3 (CentOS)

X-Powered-By: PHP/5.1.6

Connection: close

Content-Length: 158

Content-Type: text/xml


仔细研究xmlrpc.php后,发现问题出在_multisite_getUsersBlogs函数上,或者说是_multisite_getUsersBlogs函数在$rpc = new IXR_Client("$...及其后几句与IXR_Client对象有关的调用上无返回值。

$rpc->query('wp.getUsersBlogs', $args[1], $args[2]); 此行代码甚至不会执行wp.getUsersBlogs这个子函数。

限于时间与能力,暂未进一步研究。直接用RETURN语句替换了。

改动如下:

WORDPRESS 3.0.X中,在/xmlrpc.php,第1604行更改。

WORDPRESS 3.1中,在/wp-includes/class-wp-xmlrpc-server.phpt 1692行前更改:

$rpc->query('wp.getUsersBlogs', $args[1], $args[2]);

//上面一行是原来有的,下面两行增加

array_shift($args);

return $this->wp_getUsersBlogs($args);


现在测试的结果:3.0.X依然无法执行。稍后再研究
附加内容
本文出自 “张宇(数据恢复)” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: