my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE';
my $CFG_LD_SHLIB = 'gcc';
my $CFG_LDFLAGS_SHLIB = q(-shared);
Red Hat 的6.1 和 6.2 中的 apxs 也有问题,下面的行:
my $CFG_LIBEXECDIR = 'modules';
应该修改为:
my $CFG_LIBEXECDIR = '/usr/lib/apache';
得到正确的 apxs 后,就可以编译 PHP 了。经过 make 和 make install ,并且重启Apache 后,我们又得到了一个错误消息:
API module structure `php4_module' in file /usr/local/apache/libexec/libphp4.so is garbled - perhaps this is not an Apache module DSO?
不要担心,我从来就没有碰到过这样的消息!因为我在开始新的编译之前总是使用make clean ; make distclean 来清除以前编译后留下的"垃圾"。
但是需要指出的是,笔者在升级 PHP 4.0.4pl1 过程中,碰到的问题是在编译完毕,并重新启动 Apache 之后碰到 "undefined symbol:uncompressed" 的报告。经过多次调试发现是采用了 --with-mysql=/usr/local/mysql 的开关所致,后来采用 MySQL 源代码版本,重新编译 MySQL 以后,再编译 PHP ,就没有这个问题了。所以,应该是MySQL 的库没有进入编译路径所致。
需要注意的是,编译Apache 的时候,不要使用 --activate-module=src/modules/php4/libphp4.a 参数,因为这样的话,PHP4 就是以静态方式来安装了。
恭喜你,安装成功,以后 PHP 有新的补丁/版本出来,就不需要重新编译 Apache 了。
新闻热点
疑难解答