分类
原创

解决WordPress无法自动更新插件及主程序问题

最近升级到WordPress2.7后,有一个一直困扰我的问题终于到了不得不解决的时候了。

问题描述:

  1. 使用WordPress2.7的自动升级功能时,提示:You do not have sufficient permissions to update plugins for this blog或者:您没有权限更新插件。
  2. 在插件管理页面,如果有插件更新,应该会自动提示,并有一个直接升级的选项。但在某次升级后,该选项消失。只能手动FTP更新插件。

问题分析

(不想看分析的同学,请直接拖拉到后面的解决方案):

今年WordCamp期间,LEMONed同学怀疑是文件版本不协调或不完整,建议我重新安装整个WordPress来解决这个问题。但是尝试后,无效。

后来怀疑是帐号权限问题,经过检查数据库,发现自己的帐号确实是Administrator,帐号等级也是最高的10.这条路,也死了。

就这样,这个问题放了3个月,直到前几天更新了WordPress2.7。在这次的更新里,我最喜欢的就是主程序自动更新功能,但如插件一样,无法更新。

但这一次的问题比上一次清晰了很多,因为主程序更新是靠wp-admin\update-core.php这个文件实现的。既然是这里报了错,那么我们就从这个文件开始分析吧。

我分析了一下update-core那个文件,第一句就要判断if ( ! current_user_can(‘update_plugins’) )
再去capabilities.php里面看了看current_user_can这个函数,发现是一个权限分配函数,判断方法有点诡异(hc才疏学浅,没见识过这类权限分配方法),结合codex的数据库结构看了半天才看懂:

function current_user_can( $capability ) {
    $current_user = wp_get_current_user();

    if ( empty( $current_user ) )
        return false;

    $args = array_slice( func_get_args(), 1 );
    $args = array_merge( array( $capability ), $args );

    return call_user_func_array( array( &$current_user, ‘has_cap’ ), $args );
}

一开始以为它应该是通过储存在数据库usermeta这张表里的某些信息来判定当前用户是否拥有某些权限。

可是没找到update_plugins这个权限在数据库的对应位置,所以我开始思考是否这些权限是由一个数组构成,每个权限有一个对应编号。但是按着这个思路,也没有发现什么有价值的内容。

然后开始在数据库里一张张表的闲逛,突然想到wp_get_current_user这个函数是从哪取数据呢?然后就沿着这条线发现了在options这张混乱不堪的表里有一个很重要的参数:wp_user_roles

这个参数在codex里没有详细的说明,所以只有靠自己摸索。从结构来看,这个参数的值还算好理解,类似于一个XML文档,树形的。每个角色应该拥有什么权限,全都在这里。

我仔细检查了一个全新WordPress2.7数据库与我数据库option表下wp_user_roles的区别,发现我的数据库缺少update_plugins和delete_plugins这两个权限。至此,问题分析结束。

查阅Codex得知,update-plugin这一项是从2.6才加入的。可能因为某次跨越升级,或者升级不完善,或者恢复了老的数据库,导致我的表这个地方没有update-plugin这一项,自己添加上应该就ok了。

解决方案

知道了问题所在之后,解决起来自然是相当简单。

1.进入phpmyadmin,找到wp_options(默认你的表前缀是wp,如果不是,请去你自己前缀下的options)表下的wp_user_roles,点击该项前面的修改按钮。

2.你会发现这里多个角色的权限分配,不要管后面的,找到b:1;}}s:6:”editor”这样的代码,在这句代码之前插入b:1;s:14:”update_plugins”;b:1;s:14:”delete_plugins”;这样一句代码,理论上问题就该解决。可是事实上,你会发现自己无法进入后台了。别急,还有一步。

3.当时我也比较头痛,为什么理论上能解决问题的方法反倒让自己进不了后台了。想到前面把这个属性比作XML文件的想法,对这些数值那些奇怪的a:5:{s:13一类字符进行了分析。

原来答案很简单,a就是数组,代表后面括号内有多少元素;s当然就是字符串,表示后面引号内的字符串长度;b应该是空格。所以在我们增添了b:1;s:14:”update_plugins”;b:1;s:14:”delete_plugins”;这样一句代码后,事实上是给这个数组增添了2个元素,相应的,我们得去前面修改这个数组的元素数量。

4.找到整个参数中第一句s:12:”capabilities”;a:。将a冒号后面的数字加2即可。比如原本是54,你就改为56。

5.大功告成,快去享受WordPress2.7带来的全新自动升级功能吧!

后记

这个问题从今年9月拖到现在,请教了很多朋友,但谁会想到是这么一个扯淡的问题。如果不花时间自己多Google,研究Codex,分析数据库结构,是无法解决这类尴尬问题的。

所以在这个信息触手可及的时代,求人不如求己,多多动手动脑才是解决问题的王道。

分类
生活记录

写在当下,继续前行

又是一年变老的日子,作为一个blogger在这个日子不写点什么始终有种罪恶感。但一个人的倾诉欲望是有限的,而最近出台太过频繁,导致现时的我已没有太多话想说。

08年,注定是一个让我们这代人难以忘怀的年份。关于家国梦想、天下春秋,历史自会记载。所以这片自留地还是留给自己一年的点滴吧,也算是本年度‘潜云思绪’的一个精选集。

以下分4个板块,将去年生日到今年生日之间的日志做一个整理:

思绪

每年12月都有一个日子让我作为国人感到难堪。70年了,国人似乎仍然没有找到一个合适的心态去面对当年的一切。除了一代代传下来的愤怒与悲伤外,我们在这段岁月里提炼出了什么?没有,什么都没有。大多数国人不明白谁掌握话语,谁掌握历史。但万幸的是,总还是有人记得,有人在努力

Luther King给美国给全世界留下了一个梦想,而我们作为东方最大的民族给后世留下了什么,或是说我们将留下什么

一段回忆村上春树的日志,引发了文青hc的爆发。曾经的文青hc总会在新旧交替之际别有感触,今年感触的主题是知遇之恩。正是因为从小母亲对我的恩情教育,让我很难明白为何我们这些仍然白费着社会资源的人,有资格去享受优先购票的权利

一直马不停蹄向前赶的hc,回头看来路,明白了“你总认为自己没有选择的余地,但你已经做出了选择,你选择了一直向前。”

5.12这个印记不知还能唤起多少人的记忆,我们是一个善忘的民族,虽然我们从不承认。那一天永远地改变了很多人的命运。

从5.12起,想援助却深感无力的我,只能通过在blog上不断报道最新震情,用Google Earth绘制震源图等行为来告诉自己:面对灾难,我在行动。以此缓解内心因无法为灾区同胞贡献帮助产生的焦虑。不过震后发生的很多事,开始从各个方面拷问着这个国家,这个国家的国民。地震面前,是玩立场还是信奉实用主义? ,面对全球,我们是否有大国姿态?面对灾民,是否要含泪劝告

震后第三日晚,我校同学组织起来为灾区同胞祈福,那个夜晚人与人之间的互信让我久久难以忘怀。第一次,国旗为了民众而降。但无论如何,苦难虽痛,生活还将继续

一篇“操你妈的北京,奥你妈的运”激起千层浪,一举成为本blog今年最火日志,火到GFW直接屏蔽了该日志URL。为了避免各位撞墙,就不放链接了,但来自武汉理工大学对我的深情问候却有点让人哑然,不管舆论如何,至少我觉得自己光明磊落。至于北京奥运本身,从开幕式的搞笑搞假maoz同学惊现开幕式,我们就把它当一个笑话看好了。只是希望杨沛宜小朋友,下一站天后。刘翔的退赛给了很多猴急的爱国者一记响亮的耳光

关于LHC,我是很能理解那些理论物理学家的愿景的。科学从某种意义上来讲,也只是一种理性宗教而已。孤独的人类,在失去唯一的朋友——上帝——后,只能自己创造一个希望来拯救自己。而我们大家都是真的很努力在活着

我不知道会有多久,但我相信不管多少年后,回顾我国司法建设,今年11月26日将会是一个无法抹去的污点。或许我们唯一能做的,就是每年此时,为这位曾经的同胞暗自思量3分钟。

互联网

将07网志年会期间与Caiwangqin的谈话记录整理了出来,其中谈到互联网、公益、童年时成长三个话题,今年年会期间也与Caiwangqin一起夜登白云山,算是比较聊得来的一个朋友。

年会带来的不仅仅是朋友想了解一下Blog以外的hc,还有一些小小的后遗症。当然年会更多带给我们的是希望,是关于面对未来的勇气

国内互联网的乱况简直不堪入目,南方周末的挺身而出以及后来的删帖事件又为这个江湖增添了一些色彩。传统公关手段怎么与Blogosphere互动,一场新的战争在双方都陌生的战场打响。而Blogger是否就真的拥有道德优势呢?天天在谈论着言论自由的我们,当真正拥有权力时,能做到保证言论自由,不加强权限制么?

Feed给我们带来的便捷的信息获取方式,那么Feed的未来是什么样

年初互联网上几个关键词很火:陈冠希、高干MM,而后张晓舟一篇调侃重庆的文章火爆网络,为此和爱枣报闹了点矛盾,后来还算圆满解决了

年末的互联网关键词似乎有点单一:三鹿。似乎是不满于这种单调,百度出来打破了局面,我们都记得这句话:出来混,迟早是要还的。

参与Feedsky的话题广告体验了Vancl的服务,没想到遇上让自己郁闷将近一个月的事。各个互联网时代的快公司,除了快速发展外更应该注重自身内功的修炼,方能长期赢得消费者的心。

iPhone带来的不仅仅是一款新产品,而是一个全新的时代。报道完WWDC后,心情无法平息的hc写下了:iPhone,势在必行——迈向下一步的Apple 。今年Google也为大家带来了两个令人兴奋的产品:Chrome和Picasa3.

参加电脑报天使投资论坛,遇到了几件趣事。当然,我们的老伙伴GFW,今年还是继续发挥着他那无穷的本事。

第一次全身心投入一个SNS,没想到却遇到脸皮特别薄,情绪特别不稳定的校内网

工作

去年生日前夜回念过往20年,想着一切又将重新开始,自己将会在新战场上拼搏,心中感慨万千。带着这份兴奋,完成了这一年的部门发展计划,以及一个革命性Project的初期规划

本年的学生会工作带着一丝即将离别的凉意,做着各种总结回顾。到了校运会,这种纠结的心情终于一扫而空,我将永远记得23栋楼下那一夜

离开组织的那天,将自己对组织归属感的理解都写了下来。离开后才知道,原来最伤感的不是离别,而是离别后的生活

因为说了一句:

痛过,才能涅槃重生。

思索,才能独树一帜。

hc被聘为《微型计算机》的特约评刊员

cnBeta.com也于今年迈出新的脚步,我一直力推个性化Feed的开发,无奈碍于财力人力等资源,今年内仍无法上线。做个网编确实不容易

生活

春天到来的时候,陪伴hc五年的电脑宣告退休。生命中每件事物来来去去,就像一个RPG。你看,这不左手食指就来了个纤维瘤

9月的WordCamp,老友相聚,新人相遇,都是快乐的事。11月广州的网志年会,因为拿到offer的喜悦,看什么都是美丽的,与大家的交流让一个道理更加清晰:每个blog后面都是一个真实的人

一贯懒散的我,总结出来穿拖鞋也是一种生活态度DIY了佳能单反相机的快门线,送给柠檬同学,不过被可耻的鄙视了。

找工作,是今年下半年的主题。从9月1日开始的百日战争,到11月3日得到offer,正好64天的时间。其中酸甜苦辣,只有自己方能得知。

与女友一起发现了罕见的四叶草,暑假一起去了已经去过三次的丽江。或许是丽江的阳光让我回忆起来高二时看的一部电影《花与爱丽丝》,那段芭蕾让人无法忘怀。

kuso方面hc也不甘人后:搞笑的甲骨文公司户外广告Google进军实体广告?!《越狱》的新看点尴尬的一节课武藤高清写真周杰伦激情出演A片作为科学工作者的hc胡CORE与Dalai同居密照

读了najja推荐的《合作的进化》,此前也对囚徒困境进行过一点思考。参与了《小公司创业》的翻译工作。还译了一篇很有趣的科幻小说,Google的20岁生日

07年末等到了Mai的专辑《One Life》年初又是《You and Music and Dream》,年中的《Love For You》,年终《24 X’Mas Time》。今年的Mai真高产。

后记

08年就这样过去了,对下一年的眺望从没有现在这样迷茫过。明年的转变,或许是谁也预料不到的。但我的梦想,我的爱,将用自己的双手去握紧。

Don’t stop looking for tomorrow。