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

十二月 13, 2008

最近升级到WordPress2.7后,有一个一直困扰我的问题终于到了不得不解决的时候了。 问题描述: 使用WordPress2.7的自动升级功能时,提示:You do not have sufficient permissions to update plugins for this blog或者:您没有权限更新插件。 在插件管理页面,如果有插件更新,应该会自动提示,并有一个直接升级的选项。但在某次升级后,该选项消失。只能手动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 [...]

10

升级到wp2.6

七月 17, 2008

闲来无事,把blog升级到了wp2.6.没想到问题来了。 以往遇到升级数据库错误,都是修改wp-db.php来解决。今天准备修改wp-db.php,却发现2.6的wp-db.php已经和之前的不一样了。幸好柠檬男及时帮助,让我了解了原来2.6从内核上解决了这个问题,直接修改config即可解决。 本质原因是自从我开始使用wp开始就没有动过config,导致config过时严重,已经与现在的config-sample脱离太远。以后有遇到升级问题的朋友,可以先检查一下自己的config是否跟上潮流了哦。

0