Posts Tagged ‘wordpress’

做个好博客

Monday, March 21st, 2011

收到一位白板报读者来信,信中问我能不能提供和菜头博客上那种Email订阅,博客一更新,立即发送到订阅邮箱里,这样就不必每天跑来看有没有更新了。

因为我很少能有收到读者来信的荣幸,所以非常上心。跑到菜头的博客,发现他是用Feedburner实现的。这个服务我也曾用过,但自从它被封锁之后,再也没有跟进过。立即重新烧制了一个白板报的RSS,开通了Email订阅功能,并且添加到每一页的右边栏和页尾。以后读者只要填入Email,经过确认,就可以收到白板报的更新了。

在推特和微博的逆袭下,博客日渐凋零,写博客的人越来越少,人们阅读长文本越来越没有耐性。但140字的语录体与博客文章比,不但输在信息量上,还输在逻辑思维上。微博的只言片语留下巨大的逻辑鸿沟,损伤了文章应有的一致性。

微博会满足人的信息饥渴,但无法填补思维的虚空。所以,为自己计,为读者计,还是应该多写博客。

附:博客实现Email订阅的方法

1、访问www.feedburner.com

2、登陆你的Google Account,也就是你的Gmail帐号。如果没有,就申请一个。

3、按照提示,为你的博客烧制一个Feed,提示是一串英文“Burn a feed right this instant. Type your blog or feed address here”

4、管理你为博客创建的Feed,在顶部菜单里找到Publicize,点击后,在左侧菜单里找到Email Subscriptions,激活之。

5、你会得到两段代码,一段是Form格式的,一段是链接格式的。根据你的需要,把给出的代码,贴到你的博客页面模版上。

6、如果你用的是Wordpress,就把链接贴到Widget里,并且FTP打开你的博客,找到http://www.yourdomain.com/wp-content/你的主题/single.php,把给定的链接插到页面底部。

7、如有什么不明白的,可以来信问我。

我是如何解决WordPress无法登陆问题的

Friday, August 1st, 2008

前后花费了三个晚上,我终于解决了Wordpress升级后,用户名、密码都正确,却无法登陆的问题。为了让后来者不吃二遍苦,不受二茬罪,我把解决的详细过程与思路,记录如下。

一、问题描述

这一问题,有几种描述方式,为了让搜索引擎能够找到这篇文章,我把各种常用的叫法汇集如下:

1、有以症状命名的,例如:wordpress无法登陆,密码正确、登录不了,锁到wordpress之外,可以访问、无法登录;

2、有以成因命名的,例如:wordpress升级出错,wordpress2.6升级无法登陆……

3、有以出错语句命名的,这种方式最多:

1) Warning: Invalid argument supplied for foreach() ……
2)capabilities.php on line 31
3)Warning: Cannot modify header information – headers already sent by (output started at……

4、一篇法国人写的著名的解决方案,是这样命名的:Invalid argument supplied for foreach() in wp-capabilities.php: Case Cracked!
(需要指出的是,这篇文章虽然被搜索得很多,但极具有误导性,害了不少人,我认为完全在胡说八道!下文会谈及)

5、有以痛苦感受命名的:天哪,我登陆不上博客了,救命啊,雪地翻跟头跪求……
用这种命名方式搜索,田螺姑娘都没办法帮你。

二、出错语句

出错信息除了上面描述的语句之外,还有其他形式,试搜集如下:

1、我的出错信息:

Warning: Invalid argument supplied for foreach() in /homepages/23/d208744272/htdocs/wp-includes/capabilities.php on line 31

Warning: Cannot modify header information – headers already sent by (output started at /homepages/23/d208744272/htdocs/wp-includes/capabilities.php:31) in /homepages/23/d208744272/htdocs/wp-includes/pluggable.php on line 552

Warning: Cannot modify header information – headers already sent by (output started at /homepages/23/d208744272/htdocs/wp-includes/capabilities.php:31) in /homepages/23/d208744272/htdocs/wp-includes/pluggable.php on line 689

2、以下大同小异,但肯定有这一句:

Warning: Invalid argument supplied for foreach() in /home/user/wp/wp-includes/capabilities.php on line 31

三、出错诱因

目前来看,这个问题大部分情况是发生在为wordpress升级时,不但从2.5升到wordpress2.6,也看到过从2.2或者更低版本升级,遇到这一情况的。

也有案例显示,安装时就出现这一错误。这个非常罕见。

四、出错原因

我不懂技术,网上有各种说法,有说是uft-8编码转换出了问题,有人说陷入死循环。

这些都不重要,重要的是解决办法,难道不是吗?

五、修改字符编码法,或set names utf8法

这种办法,网上最多。它提供的解决办法是:

第一步:用phpMyadmin后台,把字符编码修改为utf-8。这里要注意,如果你用的是mySql4.0话,当你把字符修改成utf-8后,它下次还会显示gb2312,甭理它,其实已经改好了,我的经验是这样。

还有人说,还应该设置数据库的”collation”为”utf8_general_ci”:因为在新的服务器中建立数据库时,没有指定其为utf-8,更没设定collation,所以需要先设定数据库的字符集。

执行命令:
alter database myblog
character set utf8;

然后再在”操作”或者数据库PhpMyAdmin的登陆页面中设定collation为”utf8_general_ci”。

第二步:修改/wp-includes/wp-db.php这个文件。

这一学派认为,毛病出在wp-db.php中,没有设定好utf-8为字符集,从而造成了一系列悲剧。因此,必须修改这个文件。这一学派又有下属三个分支流派:

流派一:在$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);后面加上$this->query(“set names ‘utf8′”); 注意英文标点。

该学派认为,出错原因是wp-includes/capabilities.php里面$this->roles这个数组取到的是乱码。

流派二:就是害人的法国人的那个方案,他认为应该在上述同意位置,加上这一语句:mysql_query(“SET NAMES ‘utf8′”);,其实这是错误的!!

流派三:还有人主张$this->query(“set names ‘utf8′”);这个语句应该加到wp-db.php的另外一个位置;另外还要增加另外一处代码。我之所以,没有详细列出来,是因为这种办法根本无效。

我试过以上三种办法,最后保留了流派一的办法。

但我强烈怀疑,这种办法的有效性!!

六、胡说八道法,又名检查wp_options表法,又又名wp_user_roles法

这个办法是法国人发明的,他说,在phpMyadmin里,打开wp_options表,找到wp_user_roles一项,从中发现一个法语怪字符,Abonné,他认为正是这顶小帽子害得程序成为死循环,于是把它改成英文字符,于是立即神奇般地好了。

这个法国人还说了一句阿基米德的名言:Eurêka! ,希腊语,我找到了!真是糟蹋先贤。

实际上这个办法是最害人的。我照着把长达3公里的代码仔细检查,把所有中文都换成英文,结果依然故我。像这样被误导而浪费时间的不止我一个

七、个别成功法,又名清除cookies法

有人骄傲地宣布,解决了wordpress2.6升级后无法登陆的问题,就是清除cookies。我试了,发现这个办法是无效的。

但这启发了我,有时候你意想不到的办法,反而就是正解。

八、有效办法,又名土耳其补丁法

我在彻底绝望的时候,做了几件事:把wordpress2.6删除,换回了wp2.5。

第二尝试数据库倒裤无果之后,我抱着试试看的办法,找到了这个帖子

这是土耳其人写的一个小补丁,他说只对2.3.X版本有效。但根据我的经验,后续版本应该也可以兼容。

于是我下载了这个插件,http://file.dmry.net/blog/01/wp_user_roles_yama.zip

解压后,将它放到wordpress安装根目录下。就是这副样子:(http://your_blog_url../wp_user_roles.php)

然后敲入上述网址:http://your_blog_url../wp_user_roles.php

满屏都是字符串。

等尘埃落定,我不敢相信,我真的做到了,我又可以自由登陆我心爱的WORDPRESS了。

我升了

Sunday, March 30th, 2008

我宣布,我升了。

刚刚把博客程序升级成最新的WordPress2.5版。新版界面很漂亮,据说也更安全,防火防盗防网奸,和菜头应该喜欢,因为他渴望软件帝国里的自由,如同鹿渴望溪水,如同牛渴望梯田。

我这半辈子,没正儿八经坚持过什么,还就是博客一直断断续续再写。虽然,翻翻自己写过的字,总有一种要烧毁服务器的冲动。

太阳照在桑干河上,月亮照在和菜头的脸上,我仿佛看到两行泪水,注入澜沧江,浩浩荡荡,途径老挝越南泰国,换了个名字,汇入印度洋。

博客是对生活的简化,就像照片是对世界的简化。

警告:透过这些滑头的文字,你一无所获。因为你不知道,月亮的背后是什么。而巨大的真相的脑门儿上却写着三个字:不可说。

WordPress升级到2.32

Thursday, January 3rd, 2008

折腾是活着的证明。活在城市里太乏味了,因此,有人去雨林里越野,有人去寡妇家翻墙。临安有一个落马的镇长,一夜能翻一座山梁,只为了把山两边的两个情儿照顾好。

我不是司机不是镇长,好像一根绳子把我拴在这世界上。折腾博客是暗夜里唯一的冒险和乐趣。

我把白板报从Wordpress 2.21升级到最新版2.32,没看出有什么不同,但据说安全性增强了,哪怕年关将至,哪怕小偷和抢匪都出动,哪怕长城上的探照灯四处扫描,我这里早已壁垒森严。

升级方法很简单,备份一下/wp-content/目录下的wp-config.php,把新文件拷贝进去,再登录就可以升级了。老妪能解,领导也能做。所以就不详细罗嗦了。

接下来,写点什么。