使用wordpress mu3.0与3.1时,不知道什么原因,只要开户了WORDPRESS的MU选项,Zoundry Raven和Windows Live Writer就无法注册账户成功(之前在Zoundry Raven里建好的账号还能收发,但不能新建)。在Zoundry Raven上表现为:输入BLOG主地址后,能进入下一步,也能自动出来wordpress的API,但填好所有选项后,下一步便报错了:
“Error fetching list of blogs”,细节如下:
干干净净安装了一台CENTOS,APACHE,PHP,MYSQL,WORDPRESS后
,未出现上述问题。对两者抓包后发现:
发送的的POST包如下:
如正确执行,返回值为:
而错误的返回结构为:
仔细研究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行前更改:
现在测试的结果:3.0.X依然无法执行。稍后再研究
附加内容
“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依然无法执行。稍后再研究
附加内容