为PHP的mail()函数配置本地邮件服务器

mail()这个函数不是拿来就能用的,你需要再php.ini中做一些配置。一种方法是使用外部smtp邮件服务器;另一种方法是在本地配置一个邮件服务器。本文介绍如何利用hMailServer软件在本地配置邮件服务器。

hMailServer是一个邮件服务器软件,首先你需要下载并安装它,去这里下载,我下的是5.2版。安装的时候会提示你设置你的邮件服务器密码,记得保存好这个密码。启动hMailServer,输入密码,现在做一些简单的设置,直接照着图做就行了(点小图看大图),稍后解释这么做的目的。

hmailserver-2

hmailserver-3

hmailserver-4

第一步指定本地服务器名localhost,这个没什么好说。

第二步,在”Advanced>>IP Range>>My Computer”里,把POP3和IMAP前面的勾去掉,因为我们并不想用这个服务器收信,也不打算用IMAP协议;把所有的“Require SMTP authentication”选项都去掉是帮PHP扫清发信的障碍。

第三步,在”Advanced>>IP Range>>Internet”中,把SMTP, POP3, IMAP全部去掉,因为我们不想外人使用我们的邮件服务器;同时把“Require SMTP authentication”以加强安全性。

现在本地邮件发送服务器就配置完毕了。最后不要忘记在php.ini中确保以下部分没有被注释掉:

[mail function]
; For Win32 only.
smtp = localhost
smtp_port = 25

; For Win32 only.
sendmail_from = user@yourdomail.com

sendmail_from虽然可以不用设置,但是为了以防万一,最好设置一个默认值。

现在你就可以在本地自由的使用mail()函数了。但是不要乱发垃圾邮件哦!

[转载]鲁迅滚蛋了,他笔下的人物欢呼雀跃了

近来,由于人民教育出版社在新版语文教材中逐步剔除鲁迅的文章,引来一片争议,赞者有之,阻者有之。而笔者认为,在近年来对鲁迅话题经历了沉默、回避、冷淡的过程后,现在让其滚蛋,已经是时候了。

鲁迅之所以滚蛋,是因为那些曾经被其攻击、痛斥、讥讽、怜悯的人物又一次复活了,鲁迅的存在,让他们感到恐惧、惊慌、卑怯,甚至无地自容。

看看:

孔乙己们复活了。并且以一篇《‘茴’字有四种写法》的论文,晋级为教授、学者、国学大师;也不再提心吊胆地“窃书”了,而是平心静气地在网络上“窃文”了;不仅可以舒坦地“温一碗洒”,而且还能以其博导的诱惑力对“伊”来一把潜规则了,他岂能让鲁迅揭了他前世的底?!

“资本家的乏走狗”们复活了。尽管它们披上了精英、专家的外衣,但依然“看到所有的富人都驯良,看到所有的穷人都狂吠”,他们或装神弄鬼地玩弄数字游戏,鼓吹物价与美国接轨、工资与非洲接轨的必然性与合理性;或干脆作了外国人欺诈中国的“乏走狗”,与其里应外合、巧取豪夺。它们岂容鲁迅再一次把它打入水中?!

赵贵翁、赵七爷、康大叔、红眼阿义、王胡、小D们复活了。有的混入警察队伍,有的当上了联防队员、城管。披上制服兴奋得他们脸上“横肉块块饱绽”,手执“无形的丈八蛇矛”,合理合法地干起了敲诈勒索,逼良为娼的勾当。如果姓夏那小子在牢里不规矩,不用再“给他两个嘴巴”,令其 “躲猫猫”足矣。想想,这些下做的勾当儿怎能让鲁迅这种尖刻的小人评说?!

阿Q们复活了。从土古祠搬到了网吧,但其振臂一呼的口号已经不是“老子革命了!”而是“老子民主了!”每天做梦都盼着“白盔白甲”的美国海军陆战队早一天杀过来,在中国建立民主。因为只要美国的“民主”一到,赵七爷家的钱财、吴妈、秀才老婆乃至未庄的所有女人就都是我的了!哼!而鲁迅却偏偏要我做个被世人嘲讽了数十年的冤死鬼,我岂能容你?!

假洋鬼子们复活了。这回干脆入了外籍,成了真洋鬼子。并且人模狗样儿地一窝锋地钻进“爱国大片”的剧组,演起了凛然正气、忧国忧民的仁人志士,让人好生不舒服。此种一边哽咽着颂扬祖国母亲,一边往向征中华文明的青铜大鼎里撒尿的举动,岂不是鲁迅杂文中的绝好素材?!

祥林嫂、华老栓、润土们复活了。他们依然逆来顺受,情绪稳定。因为“这人肉的筵宴现在还排着,有许多人还想一直排下去”,这样,必须要备足了餐料。而那些准备做餐料的人,本来可以闷在铁屋子里,一边听着小沈阳的笑话,一边麻木地死去,岂容鲁迅把他们唤醒,再一次经历烈火焚身的苦痛?!

那些“体格茁壮的看客们”复活了。他们兴致勃勃地围观那些“拳打弱女”、“棒杀老翁”、“少年溺水”、“飞身坠楼”的精彩瞬间,依旧“颈项都伸得很长,仿佛许多鸭,被无形的手捏住了的,向上提着”。哈哈,仅看客一类,被你伤害的人就太多了,因为中国人几乎都愿做看客!

鲁迅之所以滚蛋,是因为当今的和谐社会不需要“投枪和匕首”,而需要赞歌、脂粉、麻药。正如陈丹青先生讲的“假如鲁迅精神指的是怀疑、批评和抗争,那么,这种精神不但丝毫没有被继承,而且被空前成功地铲除了。我不主张继承这种精神,因为谁也继承不了、继承不起,除非你有两条以上性命,或者,除非你是鲁迅同时代的人。最稳妥的办法是取鲁迅精神的反面:沉默、归顺、奴化,以至奴化得珠圆玉润”。

如果鲁迅赶上这个时代,对于“开胸验肺”、“以身试药”、“周公拍虎”、“黑窑奴工”、“处女**”、“官员嫖幼”等一系列奇闻,又会写出多少辛辣犀利、锥骨入髓、令人拍案叫绝的杂文来,想想,真是让人后怕,所幸这个尖酸刻薄的小人已不在人世了

What is ChkVersion?

ChkVersion是一个面向web专业人员及建站爱好者的工具站点,你可以在这里订阅你正在使用的或是喜欢的建站程序,ChkVersion会定时检查数据库里已有程序的最新版本,每当你订阅的程序有所更新时,会向你的邮箱发送提醒邮件。

你可以针对不同的程序进行单独订阅(图1,图2),也可以在多选后选择合并订阅(图3,图4)。此外,你也可以订阅ChkVersion的RSS Feed来关注所有程序的更新情况。

图1——单独订阅——1:点击“订阅更新”
图1——单独订阅——1:点击“订阅更新”
图2——单独订阅——2:输入用于接收更新信息的邮箱

图2——单独订阅——2:输入用于接收更新信息的邮箱

图3——合并订阅——1:勾选要订阅的程序项目并点击“合并订阅”

图3——合并订阅——1:勾选要订阅的程序项目并点击“合并订阅”

图4——合并订阅——2:输入用于接收更新信息的邮箱

图4——合并订阅——2:输入用于接收更新信息的邮箱

如果你发现ChkVersion还没有收录你正在使用的或是喜欢的建站程序,可以进行程序提交(图5,图6)。

图5——提交新程序——1:点击“提交新程序”

图5——提交新程序——1:点击“提交新程序”

图6——提交新程序——2:填写相关信息并提交

图6——提交新程序——2:填写相关信息并提交

无论进行订阅还是提交程序,都无需注册,且完全免费;如果你有任何关于ChkVersion的意见、建议或问题,请发送邮件至admin#chkversion.com。(#替换为@)

感谢你使用ChkVersion。

ChkVersion由Ven和Viiiix合力设计开发。


以上是“关于ChkVersion”,已经被写在这里了。

ChkVersion源于Viiiix的一个抱怨,他总是搞不清Joomla!什么时候就发布新版本了,于是想弄个小工具能及时提醒自己关注的建站程序的版本更新情况;他的想法和Ven一拍即合,于是就有了ChkVersion的idea雏形。

接下来,Viiiix和Ven一边对想法进行补完,一边着手开发。Viiiix承担了网站中几乎全部的前端设计开发的工作,而Ven则完成了后端程序脚本的编写。经过了一个多月的开发、测试和程序资料的收集,ChkVersion现在已经基本有样子了,可以见人了。于是ChkVersion就被发布出来了。接下来,Viiiix和Ven会继续扩充ChkVersion中的程序收录数量,同时增加新的功能与特性。

感谢使用ChkVersion,希望这个小工具对你有用。

最后,感谢Ray和王二在这个小工具开发阶段给于的关注和帮助。

Google犯下天大错误,5条PHP优化建议遭痛批

首先我承认我有点标题党了,然后:

近日Google 在 Google Code 下的 “Let’s make the web faster” 网站中,发表了一篇名为“PHP performance tips”的文章,介绍了一些php性能优化建议,其中:

  1. 不要随意复制变量
  2. 用单引号表示字符串
  3. 使用echo输出字符串
  4. 不要在echo中使用点号连接符
  5. 使用switch/case代替if/else

这篇文章发表后没多久就立刻遭到了一些PHP社区和个人无情的批驳,他们声称Google错了,错的很彻底,这5条看似有效优化建议其实完全是迷信:

1. 不要随意复制变量

Zend引擎采用了“写时复制”机制,这意味着无论你对变量进行多少次复制,真正的复制动作都仅在变量值改变时才发生。

2. 用单引号表示字符串

无数的基准测试已经证明,使用双引号表示纯字符串并不比使用单引号时慢。有兴趣的朋友也可以重复一下这个测试:

php > $blah=”blah”; $s=microtime(true); for($i=0;$i<100000;$i++) “omgwtf$blah\n”; echo microtime(true)-$s;
0.044615983963013
php > $blah=”blah”; $s=microtime(true); for($i=0;$i<100000;$i++) ‘omgwtf’.$blah.”\n”; echo microtime(true)-$s;
0.042807102203369

3. 使用echo输出字符串

根据php所在服务器环境的不同,某些情况下echo会比print()慢。这里有一篇echo和print()对比的帖子,对echo和print()的速度进行了测试:http://www.learnphponline.com/php-basics/php-echo-vs-print

4. 不要在echo中使用点号连接符

基准测试证明这又是一条与事实完全相反的建议。php引擎处理以点号连接(或者使用双引号)传递给echo的变量实际上是更快的。你可以重复这个测试:

$ php -d implicit_flush=off -r ‘$s=microtime(true); for($i=0;$i<100000;$i++) echo “omgwtf”,”bbq”,”\n”; echo microtime(true)-$s;’ | tail -n 1
1.071463108062710
$ php -d implicit_flush=off -r ‘$s=microtime(true); for($i=0;$i<100000;$i++) echo “omgwtf”.”bbq”.”\n”; echo microtime(true)-$s;’ | tail -n 1
0.44555306434631

5. 使用switch/case代替if/else

这条建议毫无意义。关于是要使用switch/case还是if/else的问题,其实完全是个代码风格问题,而它们的效率相差无几。

一向以技术为长的Google,竟然在技术问题上犯了如此错误,相当不严谨。PHP小组已经督促文章作者重新仔细审查文章,希望能尽快改掉,以正视听。

新网域名转出记

放在国内注册的国际域名只剩一个了,在新网(不是新网互联),一鼓作气也给转走。

新网的办事效率比万网高多了,收到我的材料后第二天就给回复了邮件。结果材料上少填了一些项目,只好重新再寄一份。

新的材料寄过去后,第二天就收到了确认转出的邮件,要求用域名注册邮箱回复。这点比万网好多了,SB万网只认发票。

于是第二天收到了转移密码,这里小小牢骚一下,新网发来的转移密码格式有点小问题,发来的是“xxxx .”,一个空格一个点号把我弄晕了,第一次提交到Godaddy时说转移失败,后来想想可能空格和点号是不需要的,去掉之后,果然好了。5天后域名就成功转入Godaddy了。

这次新网转域名的经历总体还是很愉快的。补充一下,我是直接在新网注册的域名,如果你是从新网代理手上拿的域名,过程会更麻烦一些。

Goodbye新网,Goodbye国内域名注册商,我已经成功逃往国外了。

用PHP在网页上显示psd文件

或许你会有直接在网页上显示psd文件的需要,那么classPhpPsdReader.php能帮助你。这是一个由Tim de Koning在2007年编写的一个基于GD库的PHP类,能够用PHP对图片进行一些操作,包括显示psd文件。这个类兼容PHP4和PHP5,可以放心使用。

使用方法也很简单,上传classPhpPsdReader.php,然后:

就这么简单。

下载classPhpPsdReader.php

Elgg网站迁移指南

Elgg官方文档上的网站迁移部分是有问题的——缺少了一些重要步骤,而且过程更麻烦。正确的方法如下:

  1. 备份网站文件,包括uploads文件夹
  2. 导出数据库
  3. 在数据库文件中,将所有旧域名、网站根路径、uploads文件夹路径替换成新的
  4. 将数据库文件导入新数据库
  5. 上传网站文件,包括uploads文件夹
  6. 删除uploads文件夹中的view_path文件
  7. 编辑/engine/settings.php文件中的数据库配置信息
  8. 如果此时网站仍然不能正常访问,禁用所有插件,再重新启用

官方文档上要求在新服务器上安装elgg,然后删除数据库、导入uploads文件夹。这里缺少了“导入网站文件”一步,而且这样做很麻烦。直接在新服务器上导入数据库和网站文件、uploads文件夹和数据库就行了。

此外官方文档里没有6和8两步。如果view_path不删除,elgg会继续在旧的网站根路径和uploads文件夹路径里寻找文件,从而导致错误。

最后,有些插件在迁移后会出现故障,禁用后再重新激活就好了。

注:以上方法只在Elgg1.5上测试成功,未在旧版本上进行测试。

知识普及:

Elgg是一个开源SNS平台软件,通过组合如博客、微薄、书签、相册、群组等多种插件来打造个性化SNS网站。

广告:

扯Web是一个用Elgg搭建的SNS社区,这个社区的成员来自“扯淡的互联网从业人员”群,欢迎志同道合者加入。目前扯Web实行邮件邀请制,如果需要邀请邮件请给我发邮件或在本日志下留言(不要忘记写上你的邮箱地址)。

万网 to Godaddy 转域名记

上个月15号的时候,刚在Godaddy买完域名,想起我在万网注册的cheweb.org似乎也该续费了。查了一下,还有一个月过期。既然在Godaddy买域名这么爽,那干脆把cheweb.org也转到Godaddy下吧,才6.99$,比在万网续费便宜一半还多。

于是开始了漫长的域名转出之路。

在网上一搜,都说万网域名转出难,甚至是不可能。可不是吗,把自己嘴里的肥肉拱手送给别人,换谁也不会乐意。看之前网友写的万网域名转出文章,要么是万网故意找理由拖延,要么是转出申请送过去就石沉大海了。不过据说前段时间有人去ICANN投诉了,结果ICANN对万网发出警告,要求必须在三个工作日内给出转移密码。希望我运气会比较好。

按照万网的要求,把域名转出申请表和身份证复印件快递到了万网业务处理部。没过几天万网来邮件了,大意如下:

尊敬的客户您好,您的域名所有人姓名是英文,请将购买域名时的发票传真过来,我们将比对发票上的名称和您的域名所有人的中文名称,如果符合就给你转出密码。

我域名所有人英文名写的的确是英文,可万网注册时还让写了中文名,那个名字和我快递去的身份证上的名字是一样的啊。而且要发票的话,你不能去财务查底根吗?不行,打电话去问。

电话通了,接电话的是妹子!说了半天都说不通,那边坚持要求传真发票。这下傻了,当时买域名没想那么多,也就没要发票。怎么办?电话那头的妹子亲切的告诉我:请打我们的400客服热线,他们会帮您补开发票。

没想到一场踢皮球开始了。

业务部的妹子让我打400,结果400说“请联系您的域名销售专员”并给了我一个电话号码。

打到域名销售专员那里,南京的,又是个妹子。她说她也没有权限开发票,让我用在线问答系统申请发票。

到在线问答系统里提交了申请,又补充了些内容,总算肯给寄发票了。万网提供3种邮寄方式:平信-免费,丢了倒霉;挂号信-免费;快递-到付20元。选了挂号信。这时已经4月20日了,于是就开始等。

于是就等。

等了7天,挂号信还是没来。想查询一下挂号信的邮寄情况,结果发现挂号信查询要1个月,而且还不一定能查到结果,查询功能形同虚设。不禁开始骂邮政,太没有效率了,难怪会亏损成那样。10天过去了,已经4月30日了,离cheweb.org过期还有20天。想想算了,要是转不出去就乖乖在万网续费吧,谁让咱当初没长眼上了贼船呢。

没想到5.1过后,峰回路转,上班第一天就收到了挂号信。一看,奶奶的,4月20日开的发票4月29日才寄出。邮政我错怪你了啊,没有效率的是万网,是万网SB啊!

赶紧去发传真,发到万网妹子提供的传真号上。结果。。。结果是个空号。又打去万网,重新给了个传真号,终于传真过去了。

打电话去万网妹子那里问“有没有收到我的传真啊?”,妹子说,“我们传真是有专门部门统一收取的,一个工作日内会到我这里”,日啊,太没效率了。

又过了3天,4月7日,万网终于发来了转移密码。谢天谢地,总算是成了!这是距离我送出转移申请已经22天了,离域名过期还有13天。

赶紧上Godaddy买域名转移,6.99$一年。提交了验证码、转移密码,接下来是等待原注册商确认并释放域名。

等啊等,5天过去了,还是没有成功转移,不禁开始咒骂该死的万网难道把我域名扣住了?终于在第七天,距离域名过期还有8天的时候,收到Godaddy域名转移成功的邮件了。

大功告成,实在是太曲折了,泪流满面啊。。。

总结一下吧:

  • 域名转移一定要趁早,最好提前2-3个月开始,因为国内的注册商工作效率很低,而且他们会用各种问题找你的茬。
  • 如果你是从代理手上拿的域名,那就要提前的更早。因为你和代理确认过转出后,还要再跟上级代理确认一次。
  • 重要的东西一定要用信誉好的快递寄。虽然这次用挂号信寄发票没有丢,但是挂号信基本上是没法查询的,丢了都不知道是怎么丢的。
  • 快逃到国外去吧,国内域名注册商太恐怖了。

家里能上网了

就在5分钟前,我终于结束了长达14个月的家中不能上网的历史,此刻的我泪流满面。。。

感谢楼上的刘大哥肯和我共享网络,感谢TP-LINK造出质量如此之好的网络产品,路由器天线摔断了还是能用。

升级软件去了,一堆软件要升级的。