使用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依然无法执行。稍后再研究
附加内容
转载于:https://blog.51cto.com/zhangyu/526429