现在安装PHP5简单多了

熟练了以后,安装PHP5简直是一件轻松愉快的事情,平台:Win2000 pro, Apache 2.0.48。

  1. 解压文件。
  2. 在Apache的httpd.conf中增加LoadModule php5_module "e:/server/php5/php5apache2.dll"。
  3. 在Apache的httpd.conf中增加“AddType application/x-httpd-php .php”.
  4. 在Apache的httpd.conf中增加PHPIniDir "e:/server/php5",这样你的PHP.INI就不用放在Windows目录下了。
  5. 重启Apache,一切OK。

还有一个小窍门,如果你在Apache的httpd.conf中写了

AddType application/x-httpd-php-source .phps

这么一句,那么访问以.phps为扩展名的文件时会显示源代码,并且是经过语法高亮显示的。

安装mysql或mysqli扩展时,只需要复制一个libmysql.dll文件到Windows目录即可。安装编码转换可以用mbstring,不用像iconv那样麻烦了。

防火墙后架设MDaemon不能发送邮件的情况

MDaemon的版本为7.2.1中文版,安装在防火墙之后,内网192.168段的地址,通过防火墙的转换将SMTP、POP及WebClient端口映射到主机上。操作系统为Windows2000 Server,没有配置运行于IIS下。

域名配置:

domain.com MX 10 mail.domain.com
domain.com A – xx.xx.xx.xx
www.domain.com A – xx.xx.xx.xx
mail.domain.com A – xx.xx.xx.xx

域名的配置应该是没有问题的,A记录和MX记录都有,但MDaemon就是只能收信,不能发信,发送到tom.com的信件总是被拒绝,提示:

550 CoremailSys:IP blocked by RBL,Please see http://whitelist.mail.tom.com

起初以为是不是我的IP地址在黑名单中,所以被拒绝了?于是到TOM申请加入白名单,但仍然无法发送邮件。后来感觉到是不是发送HELO/EHLO信息的时候有问题,因为查看LOG中,连接TOM.COM是根本就没有HELO的信息。MDaemon中主域的部分设定如下:

主域名:domain.com
HELO域名:mail.domain.com
机器名:domain.com
主机IP:(内网IP)

由于WWW服务和MAIL都在这一台机器上,所以当时安装MDaemon的时候就这么设定了。而把主域名都改成mail.domain.com以后,就能够发送邮件了。目前测试发送到tom.com和gmail的信件都能收到,在LOG信息中也有了EHLO信息。

但这样设定的话,用户的邮件地址会变成user@mail.domain.com,这不是我想要的,因此仍将主域名设为domain.com,再增加一个次域mail.domain.com,这样用户邮箱地址仍然是user@domain.com,但只能发送到gmail,发送到其它地方的信件收不到。

于是,又重新来过,把主域名、HELO域名、机器名都设置为domain.com,次域也不设置了,折腾来折腾去,发现可以发信了,到gmail、sina、yahoo的信件都可以发送出去,唯独tom的不行。tom提示我不在它的白名单中,于是到whitelist.mail.tom.com又注册了一下IP(其实我以前也注册过,不知为什么没用),然后就发现tom也没有问题了。

稀里糊涂的把问题给解决了,接下来要使用一段时间看有没有变化或后遗症。但我感觉现在由于垃圾邮件的猖狂,给正常配置邮件服务器增加了许多负担和麻烦,发送邮件应该是很简单的事情,现在却搞得这么复杂。主域名、HELO域名什么的和MX记录也没有太直接的联系,如果MAIL单独用一台主机作,不知道又需要怎么设置才行。

谁的网页能用10年?

看了“为什么做网页要遵循标准?”,再一次感叹微软把用户玩弄于股掌,做网页时遵循标准当然是好事,但“ 现在写的网页,也许10年后都还在用”未免有些夸张吧,至少很多软件能用10年的都很少,更何况网页往往只是软件的一部分而已。

Firefox也好,IE也好,我们做的网页都是他们来呈现给用户的,那么真正应该标准化的是谁?应该是他们吧。为什么XML就能够把格式要求得那么严格,那是因为只要你错了一点点,就不能使用,没有“容错性”比较好的XML解释器,所以,你只能老老实实的按标准来写。在这方面,Firefox确实比IE要胜一筹,换来的代价是很多网站惨不忍睹。

迟早有一天,IE会符合标准的,因为如果它不向标准靠拢,那么它会让自己成为标准的,但习惯利用IE“容错性”比较好的“特性”开发网站的要小心了,因为IE也是有“标准”的,这个或那个标准都好,不遵守是迟早要倒霉的。

Sybase Open Client 和 GTK+有点小冲突

安装了GIMP准备替代Photoshop进行图像处理(我也就是只用点皮毛,估计GIMP功能足够了,还没详细研究),但发现安装之后发现Sybase的SQL Advantage不能用了,Dsedit也不能用了,Dsedit提示:

Fail to initialize LIBTCL.DLL .Please make sure the SYBASE environment variable is set correctly

在网上搜索了半天,终于找到了原因:

安装GIMP的时候需要安装GTK+,而GTK+需要选择语言,见下图选择语言的窗口:

(选择里面没有美国英语,但有英国英语en_GB,可以选择了英国英语后,再修改环境变量为en_US,使用不受影响)由于我的操作系统是WinXP,所以默认的是中文环境,但GIMP中的中文却是方块,所以只能选择英语系列,在这里选择en_GB,并到环境变量中修改为en_US,GIMP使用正常了,英文字不会是小方块。

问题就产生在这里,这里选择的语言,设定保存在环境变量LANG中,也就是相当于

set LANG=en_US

恰恰巧合的是,Sybase也用到了这个环境变量,在这里查到一点说明:

When Sybase runs, it tries to load the language-specific components based on
two things. The environment language setting, and the corresponding
language component from its locales.dat file. On NT, the Sybase client may
use LANG as the environment variable, but more often, it uses LC_ALL. By
default for an english environment, it expects the value ‘enu’.

也就是说Sybase客户端程序启动的时候会检查LANG和LC_ALL这两个环境变量,并根据其内容选择相应的语言。GTK+选择英语设置的内容被Sybase使用,从而导致Sybase无法将其对应到对应的语言,进而出错。

解决方法:首先仍然保持GTK+中选择语言不变,这里我选择的是en_US,如果是选其它语言,下面的操作也类似。

编辑Sybase的语言配置文件locales.dat,找到[NT]部分,在

locale = default, us_english, iso_1

前增加一句:

locale = en_US, us_english, iso_1

这样就能骗过Sybase了,其它的使用依然使用locale = default的设定,经测试,存、取中文都正常,不受影响。只有一个小小的缺陷,就是使用SQL Advantage连接Sybase服务器时,会有个小提示:

Server Message: Number 2411, Severity 10
Line 1:
No conversions will be done.

不过再选择数据库,执行SQL什么的就没有影响了,也不会再有类似的错误提示。

PHP5在win平台下的is_uploaded_file不好用?

在使用Discuz! 2.5F SP1 简体中文版的过程中,发现上传头像不好用,为了找到原因便翻看它的代码,原来在memcp.php中有这么一段复杂的判断:

if(!((function_exists(‘is_uploaded_file’) && !is_uploaded_file($customavatar)) || !($customavatar != ‘none’ && $customavatar && trim($customavatar_name)))) {

检查了半天,发现正常上传的文件通过is_uploaded_file函数判断却不返回True,由于这个判断语句实在是太绕圈子,就没有再详细检查,头像不能上传就算了吧,可论坛附件的上传倒是挺正常的。

BTW: Discuz!的代码风格实在是不敢恭维,读起来很头疼。居然还有“&& $customavatar &&”这样的判断写法。

两个PHP框架

Cake PHP framework

类似于 Ruby on Rails ,它封装了数据库连接,模板,及生成链接。最大的特点就是数据操作,不用自己再写多少代码。和 Ruby on Rails 类似,它生成一个数据表的操作最少只要一行代码。 Cake PHP framework 还有很大的一个优点就是它是一个轻量级的框架,虽然第一次看来会觉得很神奇,但是仔细看它的代码也很好懂而且也没什么特殊之处,但其开发使用方式确实很独特,实用,高效。如果是作基于数据库的 PHP 系统,这是一个很值得考虑的选择 。

看一下 Cake Tutorial 就能了解用 Cake PHP framework 建立一个 Web Application 是如何的快速方便了。它介绍了如何快速地建立一个 blog 程序的例子,几分钟就能搞定。

from tsing’s Blog

廖宇雷的PFC

国人的作品,这里有详细的说明,就不再粘贴了。