The strangest problem always comes to the simplest answer

After installed Apache, MySQL, PHP on Windows 2008 R2 64-bit, I ‘m facing the strangest problem ever.

My OS is 64-bit, but Apache, MySQL, PHP are all of 32-bit version. Though MySQL has official 64-bit version released, but I don’t see any benefit while Apache and PHP have not.

When phpMyAdmin is installed and setup, I use Firefox to access it, it took a long time but no response. I read phpMyAdmin‘s document and it says:

When using the “cookie” authentication method, the mcrypt extension is strongly suggested for most users and is required for 64–bit machines. Not using mcrypt will cause phpMyAdmin to load pages significantly slower.

But I checked and checked and sure that I’ve installed mcrypt support successfully.

After all, I wrote a very simple test program contains only one line:

1
$link = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());

The same thing happened again… and the error message says:

Warning: mysql_connect() [function.mysql-connect]: [2002] A connection attempt failed because the connected party did not (trying to connect via tcp://localhost:3306) in E:\HTTPD\htdocs\test.php on line 2

Warning: mysql_connect() [function.mysql-connect]: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in E:\HTTPD\htdocs\test.php on line 2

Fatal error: Maximum execution time of 30 seconds exceeded in E:\HTTPD\htdocs\test.php on line 2

But wait…

Here the problem is quite clear: PHP can’t find localhost server.

And the reason is so simple that Windows 2008 R2 resolve localhost to ::1: in IPv6 format by default not 127.0.0.1 in IPv4 format, and PHP is not IPv6 safe. So, connection is always timeout.

Knowing the reason, there is no need for solution any more.

活着真的很不容易

在色魔团伙上看到在讨论惨烈的小时候,将 re 贴记录下来:

  • 2 岁的时候,家里在农村,用的那种铸铁的烧煤的炉子,在炉子边站小板凳上学大人炒鸡蛋,一下子没有掌握好平衡一脑袋扎进去了,头发全烧没了,现在下巴还一个很大的疤;
  • 6 岁,跟爸(ba3)爸(ba0)第一次去水上乐园,中间是普通的游泳池,两边一个不到 0.5m 的儿童区,一个
    3m 的超级深水区,在左边玩够了,去右边,看样子差不多,直接跳进去了,当时完全不会游泳,只会戏水,狗刨都不会,神奇的是居然在里面非常清醒,没有任何不适感……还能看见水里的样子…完全就像后来的人与自然里面水下摄影的感觉,…然后睁眼就是差点被吓死的老爹,导致到现在都没有学会游泳,下游泳池就哆嗦;
  • 8 岁的时候,光脚,一脚踩一根向上的生锈的钉子上了,当时一下子,没有觉得有什么,回家打完了破伤风爸(ba3)爸(ba0)给我挤脚里面的淤血直接疼晕过去了;
  • 同年,过年时候在叔叔家玩,当时都是组合家具,中间一半是梳妆台,上面是一个玻璃门的展示柜,在家具上跳来跳去,直到上那个玻璃柜直接扣我头上,里面全是花瓶什么的巨大的玻璃制品全砸脑袋上,所以看见IKEA的高家具都有墙面固定装置觉得实在是美好;
  • 12 岁,跳窗台,直接让水磨石最尖的那个角磕到膝盖下面肉皮最薄的地方,然后第一次直接看见人的骨头是啥样的了;
  • 14 岁,体育课考引体向上,做这个如果会荡起来其实可以很省力气的,我荡的最好,幅度小,基本上看不出来,一次给大叫表演的时候,在 2m 高的单杠上,荡的幅度大了点,正好手上有汗,打滑,然后整个人的后脑勺、脊椎平行和水泥地亲密的接触,等我睁眼的时候已经在急救室了;
  • 16 岁,班级大扫除扫房顶,用桌子摞了两层,我在上面打扫,结果桌子塌了,摔下来,正好凑巧两个桌子的边缘就像剪刀一样把外耳廓蹭出来一个2cm的口子,当时自己没觉得,直到有人注意到我的一半外衣上都是血才发现,然后大家都来看我说送我去医院,结果一个女生血晕,晕过去了,然后没办法,先送这个吧,至少我活着,去医院后缝针,然后直接回家,忘了告诉父母要每天去输液消炎,3 天后复查的时候已经化脓,赶紧用大剂量的抗生素,幸亏小时候用抗生素很少,所以很见效,否则,就成了一只耳了;
  • 18 岁,大一,玩单杠,跳上去抓杠的时候,没注意旁边有一个很大的缺口,估计是电焊焊掉旁边的杠留下的,然后右臂划出来一条长10cm的血沟,现在还有3cm的伤疤;
  • 去年买了一个电热水壶,插上插座就开始烧,看了半天没动静,还想这个壶是不是坏的啊,就用手指头去摸底盘,烫出来俩大水泡才反应过来,这个壶是好的,只是没水。

生活还在延伸,悲剧未完待续……

纯粹显摆

哎呀呀,我都说了纯粹显摆了,就不用进来看了。

功课历史上最疯狂的一个月的成果:

自己动手,丰衣足食

浏览器的首页问题让洒家头疼已久,最初的空白页面,觉得太浪费了,然后用 Google 吧,其实用途不大,后来升级到 Firefox 的 Fast Dial 插件,感觉好多了但是还没有到完美的地步。

实在不行,只能自己动手,丰衣足食,自己用 HTML 写一个首页吧,这样想怎么控制就怎么控制了:

然后配合 Firefox 的 New Tab Homepage 插件,让新开的标签页都能显示默认的起始页,而且反正都是静态的,不在乎速度的问题了。


PS:本贴发布后深受好评,已经有好几个朋友向俺索要源代码自己修改去了。

WAMP crashes easily those days: Some notes on PHP configuration

I’ve upgrade my WAMP(Windows+Apache+MySQL+PHP) to lastest versions, but Apache crashes more often then it used to be due to incorrect configuring PHP.

Now I’ve finially got a stably working development environment. And here is some notes:

  1. go-pear.bat dose not work.

    When initializing as usual using go-pear.bat command, I got an error message:

    1
    2
    phar "E:\HTTPD\php-5.3.0-Win32-VC9-x86\PEAR\go-pear.phar" does not have a signature
    PHP Warning:  require_once(phar://go-pear.phar/index.php): failed to open stream: phar error: invalid url or non-existent phar "phar://go-pear.phar/index.php" in E:\HTTPD\php-5.3.0-Win32-VC9-x86\PEAR\go-pear.phar on line 1236

    So, go-pear.bar did not work for me, but: php -dphar.require_hash=0 PEAR\go-pear.phar is all right.

  2. Xdebug makes Apache crashes everytime.

    As I said, I’ve upgraded all components to it’s lastest version: Apache, version 2.2.13 form offical site, PHP, version VC9 x86 Thread Safe, MySQL, version 5.1.38-community.

    Following Xdebug manual, I have to download the one matches the PHP version I’m using. So, I downloaded Xdebug 2.0.5 5.3 VC9 (32 bit), made modification to php.ini to enable Xdebug, and restart Apache.

    From now on, Apache crashed everytime I call phpinof() function. I’ve tried some solution from Google ,but none of them works. Though, one page remains me of the version of PHP. And I found this on PHP for Windows download page:

    Which version do I choose?

    If you are using PHP with Apache 1 or Apache2 from apache.org you need to use the VC6 versions of PHP

    If you are using PHP with IIS you should use the VC9 versions of PHP

    Change my PHP from VC6 to VC9, re-configure all settings and download Xdebug 2.0.5 5.3 VC96(32 bit), it works!

  3. Can’t make new folder when installing PEAR.

    After solve problems above, I came to a new one, When installing PEAR, ater set the dirs, PHP began to download and install PEAR components, installation programe breaks and shows:

    1
    2
    3
    4
    PHP Warning:  mkdir(): No such file or directory in phar://E:/HTTPD/php-5.3.0-Win32-VC6-x86/PEAR/go-pear.phar/System.php on line 277
    Warning: mkdir(): No such file or directory in phar://E:/HTTPD/php-5.3.0-Win32-VC6-x86/PEAR/go-pear.phar/System.php on line 277
    Unable to create Temporary directory for processing E:\HTTPD\php\PEAR\tmp.
    Run this script as administrator or pick another location.

    I’m sure nothing is wrong about dir premission. Solved this problem, I’m also sure that few people may face this, because it is due to the immature hardlink mechanism on Windows Server 2008.

    I made hardlink named php to folder php-5.3.0-Win32-VC6-x86 and I was running the programe in php folder. After I change my current folder to php-5.3.0-Win32-VC6-x86, it goes well.

    Conclusion: harklink on Windows is still a load of crap.

Update 2009/08/15-2009/08/25

忍不住了,还是要学习一下 SamsonUpdate 体了。

手机篇

  1. 2009/08/15 回家,途径帝都。每次回家都特倒霉,2 年前在家被偷了钱包,这次在上机场大巴前丢了手机。
  2. 上大巴后发现手机丢失,紧急报停,进了候机隔离区,找到全球通 VIP 候机室,现场转成全球通,补卡。下了灰机拽上老鼠直接去苏宁拿下 Nokia E71,回到旧都后去营业点办理品牌转移撤销业务,一切顺利。
  3. 通过 PC Suite 对上一个 Nokia E61i 进行的备份,短消息居然无法导入 E71,通讯录恢复到 2009/02/06 的备份。
  4. 突然想起来前段时间内测 QQ 同步助手的时候,对通讯录和短消息进行了一次备份,赶紧下载,然后恢复,神啊,居然真的恢复到了 2009/07/21 的备份,一个月的丢失完全可以接受了,唯一的问题就是放在 My Folders 里面的短信的目录格式丢失,都放在一个目录里面了,不过这个已经不算是什么问题了。我爱 QQ 同步助手
  5. 在帝都购买 E71 入手,才发现这机器街机到什么程度,从苏宁到四惠站短短的一个小时就碰见至少6个(拿出来在手上的),包括卖手机的大妈……
  6. E71 居然内置了 GPS,很爽,配合 Google Maps 和内置的 GPS data 搭配的很好。
  7. E71 的电池真耐用,用了好多天,天天 GPS + GPRS 都不怎么费电。当然了,根据莫非法则,你想让手机没电的时候就是不耗电,当你需要手机的时候才会没电。一路上完了半天的 GPS,同时用 GPRS 上 QQ、UCWEB 都没事,等到我需要打电话问路的时候,没电了……

回家篇

  1. 东航的 A320-200 真厚道,紧急出口前一排座位直接拆除,腿伸直了都碰不到前排。
  2. 陪家母去庄里的中信存钱,直接取白金号,插了 20+ 老头老太的队,家母甚悦。号码纸上写着:白金号,White Gold Service,太山寨了。
  3. 庄里的火车站的 VIP 候车室可以走光大的万里行,而且没有验资设置,用我在旧都 0 开的万里行直接进去,空调很爽,但是没有茶点。
  4. 光大 VIP 候车室的空调很爽,可惜没呆几分钟就被告知可以提前进站,上了火车才发现没开空调,热死,所有提前进站的人都在站台上吹风,NND,干嘛这么早赶人啊。
  5. 俺回家最重要的任务上就是给父母打扫垃圾,一回家家母就开始收拾冰箱:这盒巧克力快过期了,你带走吧,这次的鸭蛋不如上次的好,你带回去吃吧,这盒点心我们不爱吃,你路上吃吧,那瓶矿泉水都在家里放了好久了,不知道坏没坏,你带火车上吧,省的买了……

出游篇

  1. 去东极前去奉化和朋友汇合,还有时间就蹭医院的设备做做理疗拔拔火罐。说是哪里不好,那么那个对应的穴位拔出来的颜色就特别深。拔完了一看自己身上,这里颜色很深,恩,说明颈椎不好,那里也很深,说明腰椎不好,找来找去基本上我就是个废物了。突然发现有俩火罐拔出来颜色很浅,大喜,问朋友这是什么穴位对应身体哪里,看来我还是有好地方啊,友看过后淡淡的说,那俩不是穴位,是为了让你不乱动的……
  2. 到了东极才知道海水真的是蓝色的,天空也是蓝色的,平常去的海边都是黄河再现。可惜没有到过远洋,不知道远洋的海水天空会不会更蓝。
  3. 在内地吃海鲜是奢侈的事情,到了岛上吃蔬菜才是奢侈的。那些不认识的贝、螺实在是太可怕了,还是吃各种各样的鱼吧,这个不复杂。
  4. 本来以为一个 18-55 的狗头就够了,出去了才知道男人永远少一个镜头。没有200的很多景色都拍不好,18的广角基本够用,但是还是想有一个更广的。
  5. 东极不愧为是大陆最东端,早晨 5 点的太阳就高高挂在天上晒得睡不着觉。
  6. 一面是大海,一面是超大面积的平整光滑的玄武岩,美哉。
  7. 回到舟山,吃上了 KFC,吹上了空调,立马感觉回到了文明社会。
  8. 在宁波汽车总站买回旧都的车票的时候,发现一个能够刷卡的窗口,幸福的有眩晕感。

结束篇

  1. 回到学校,收到交行世博金卡,YoungPower 黑卡,建行对账单,拿着对账单申请乐当家白金卡去。
  2. 打开 Google Reader,超过 1k+ 的新 post 等着阅读,太可怕了……
  3. 两天时间总算把生活回归正常了。

在 Slackware 下全部从源代码安装邮件服务器

习惯于自己从源代码开始编译安装软件,现在要配置一个邮件服务器,以前用的 Qmail,感觉不是很好,sendmail 也被骂死了,决定改 Postfix 看看。

目的:搭建一个支持 POP3、IMAP、SMTP、WebMail 的邮件系统,支持虚拟域和虚拟账户。

操作系统:Slackware,所需软件(库):Postfix、Cyrus SASL、Courier Auth Lib、Courier IMAP server、Courier Maildrop、amavisd-new、Clam AntiVirus、MySQL、Apache、Extman/Extmail、RRDtool。

说明:

  • 安装操作系统的时候,只安装最基本的开发环境和库,其他的服务器软件一律不装。
  • 考虑到实际用途,很可能还会需要安装 PHP 和 phpMySQL,请在安装完 Cyrus SASL 后安装 PHP,否则可能会产生依赖关系,关于 PHP 的安装,请参加本 Blog 的其他文章。
  • 本人习惯于按照如下方式设定安装目录,如果您习惯其它方式,请相应的修改目录,如果您全部采用默认目录,则更简洁:
    1. 数据文件,放在 /home 下,比如 www、mailbox。
    2. 大型的,需要配置、启动服务的软件,放在 /home 下,例如 MySQL、Apache、Postfix 等。
    3. 不需要配置的,而且不需要独立启动的库,放在默认目录下,例如 Perl 的模块等。

目录

一、安装前的准备

  1. 系统需求
  2. 下载软件包
  3. 创建所需的用户、组和目录

二、软件包安装

  1. 安装 MySQL
  2. 安装 Apache
  3. 安装 Cyrus SASL
  4. 安装 Postfix
  5. 安装 Courier Authlib
  6. 安装 Courier IMAP
  7. 安装 Courier Maildrop
  8. 安装 Spamassassin
  9. 安装 Amavisd-new
  10. 安装 Clam AntiVirus

三、系统配置

  1. 配置 MySQL
  2. 配置 Apache
  3. 配置 Postfix
  4. 配置 CYRUS-SASL
  5. 配置 Courier Authlib
  6. 配置 Courier IMAP
  7. 配置 Courier MailDrop
  8. 配置 Spamassassin
  9. 配置 Amavisd-new
  10. 配置 Clam AntiVirus

四、Webmail 和管理端

  1. 系统需求说明
  2. 添加数据库
  3. 安装 Extman/Extmail
  4. 配置 Apache 的虚拟主机
  5. 安装 RRDtool
  6. 配置 Extman/Extmail
  7. 其他配置

五、启动并且测试服务

  1. 启动服务
  2. 测试

Install LILO to MBR on CCISS device

I was in hell when trying to get LILO installed on a CCISS driver, which is how HP SmartArray RAID card recognized as. No matter I installed LILO to MBR or Boot Record, it always failed.

Here is my solution:

  1. After installing Slackware finished, reboot server with Installation CD.
  2. At prompt, input:
    1
    hugesmp.s root=/dev/cciss/c0d0p2 rdinit= ro

    Change hugesmp.s to your kernel if necessary.
    c0d0p2 means second partition of logical drive 0 on controller 0, which is my “/” partition.

  3. Login as root, modify /etc/lilo.conf. Change boot = /dev/sda to boot = /dev/cciss/c0d0p2.
  4. Run the command:
    1
    2
    lilo -M /dev/cciss/c0d0 mbr
    lilo

Reboot to check if everthing is right.

在 Slackware 下全部从源代码安装邮件服务器:五、启动并且测试服务

1、启动服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 启动 MySQL
mysql.server start
# 启动病毒防护
su - amavis -c "/home/amavis/sbin/amavisd"
/home/clamav/sbin/clamd
# 启动 authlib
/home/courier/authlib/sbin/authdaemond start
# 启动 POP3 和 IMAP
/home/courier/imap/libexec/imapd.rc start
/home/courier/imap/libexec/imapd-ssl.rc start
/home/courier/imap/libexec/pop3d.rc start
/home/courier/imap/libexec/pop3d-ssl.rc start
# 启动 Postfix
/home/postfix/sbin/postfix start
# 启动 Extman 所需的图形统计
/home/www/extsuite/extman/addon/mailgraph_ext/mailgraph-init start
/home/www/extsuite/extman/addon/mailgraph_ext/qmonitor-init start
# 启动 Apache
apachectl -k start

2、测试

执行 netstat -ap,看看已经打开被监听的端口中是否有下面的所有端口:

1
2
3
4
5
6
7
8
9
10
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:3306                  *:*                     LISTEN      3377/mysqld    
tcp        0      0 *:auth                  *:*                     LISTEN      3080/inetd      
tcp        0      0 *:smtp                  *:*                     LISTEN      29100/master    
tcp6       0      0 [::]:imaps              [::]:*                  LISTEN      29020/couriertcpd
tcp6       0      0 [::]:pop3s              [::]:*                  LISTEN      29032/couriertcpd
tcp6       0      0 [::]:pop3               [::]:*                  LISTEN      29026/couriertcpd
tcp6       0      0 [::]:imap               [::]:*                  LISTEN      29013/couriertcpd
tcp6       0      0 [::]:http               [::]:*                  LISTEN      3307/httpd

注:如果你没有加载 POP3-SSLIMAP-SSL 支持,那么 pop3simaps 端口就不会打开。

然后看看 /var/log/maillog 里面是否有错误,本系统主要的日志都在这个文件里。

下面就是用浏览器打开 http://domail.ltd/extman/,用 postmaster@domail.ltd:extmail*123* 登录,然后添加域、帐号并且使用邮件系统吧。

下面测试垃圾邮件和病毒邮件监控是否正常工作。

用其他的邮箱给自己的帐号发信,分别包含如下特征字符串:

1
2
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

第一行是病毒邮件的特征字符串,第二行是 Spamassassin 的 GTUBE 垃圾邮件特征字符串。

如果一切正常的话,那么病毒邮件就会显示出被隔离的字样,而垃圾邮件则自动存入垃圾邮件箱。如果没有,请检查 /var/log/maillog 以定位问题。