2.4.3 编译PHP 5
1. 安装开发工具
在开始编译之前,需要把必要的开发工具(编译器、make程序等)安装好。这些开发工具的安装工作说来并不复杂:启动system-config-packages程序,选好有关的软件包,然后安装软件包即可。
不过,在笔者的测试系统上,这项看似轻而易举的工作带来了许多麻烦:笔者以前用up2date程序对系统进行的一次升级与这些开发软件包发生了明显的冲突,而system-config-packages程序又无法解决软件包之间的依赖关系问题。
经过一番摸索之后,终于用一条up2date命令把所有必要的程序都安装好了。那几个软件包的最新版本以及它们所依赖的其他软件包都是从因特网上安装的。该命令需要提前安装好up2daet工具并能够高速上网。根据计算机里已经安装了哪些软件包,或许还需要在下面这条命令里再增加几个其他的软件包:
![]()
注意,根据具体安装的MySQL版本挑选一个适用的MySQL-devel软件包和开发辅助文件,这个软件包可以从devel.mysql.com网站下载、用rpm命令来安装:
![]()
2. 下载并安装PHP 5的源代码
被打包为一个*.tar.bz2文档的PHP 5源代码可以在下面的站点上找到:
![]()
接下来的工作将使用/usr/local/src子目录来完成。如果想以某个普通用户的身份来完成后面的操作,要趁现在这个机会改变这个子目录的属主,如下所示:
![]()
现在,把PHP 5的源代码解压缩到这个子目录里:
![]()
3. 编译PHP 5
在正式编译PHP 5的源代码之前,还需要用/.configure命令为PHP设置一些编译选项。如果还想把其他一些PHP扩展模块包括到本次编译任务中来,要用相应的编译选项添加它们。下面给出的configure命令已经足以满足本书示例的需要。如果具体使用的configure命令能够写在一行,就不必非得用反斜线字符(“\”)把它分为好几行。
下面是对将要用到的一些configure命令选项的说明:-prefix选项负责设置PHP 5的安装位置;-with-apsx2选项用于把PHP 5编译为Apache 2的一个扩展模块,紧随其后的路径是该Apache模块的存放地点;-with-libxml-dir选项给出了XML库的存放位置;类似地,-with-zlib-dir选项给出了zlib库的存放位置。
-with-mysql选项的意思是编译出来的PHP将使用传统的mysql接口(详见第15章)。紧随其后的路径是MySQL软件的安装目录,从dev.mysql.com网站下载的预编译MySQL版本都以/usr作为其安装目录。
-with-mysqli选项的意思是把新的mysqli接口集成到PHP中(详见第15章)。紧随其后的文件是MySQL-devel软件包的组成部分之一。这涉及一个用来给出MySQL版本信息及其安装位置信息的脚本。
--with-xxx和-enable-xxx选项用来激活PHP的各种附加功能。configure命令还有许多其他的命令选项,用/.configure -help命令可以查看到一份比较完整的清单。下面是configure命令的一个用法示例:

如果configure命令返回的出错信息说它未能找到某些程序或函数库,必须先用up2date命令安装好它们,然后再次执行configure命令。
把有关的编译选项都配置好以后,执行make命令开始编译。这个过程将花费好几分钟。如果在编译完成后又执行configure命令改变了某些编译选项,在再次执行make命令之前必须先用make clean命令删除前一次的编译结果。
![]()
提示 在编译过程中,如果出现了很多提示libmysql库里有多重定义(multiple-defined)的出错信息,就说明configure命令生成的Makefile文件里有错误(这种问题在笔者进行的测试中曾多次发生,其具体原因尚不清楚)。
解决这个问题的办法是:在执行make命令之前,用一个文本编辑器打开Makefile文件,并在其中找到EXTRA_LIBS= . . .语句。在这条语句里会发现lmysqlclient出现了两次。删除其中之一,保存Makefile文件,然后再次执行make命令。
最后,必须把新编译出来的PHP模块安装到一个能够让Apache找到的地方。这需要以root用户的身份执行make install命令:
![]()
按照刚才的配置,PHP 5将被安装到/usr/local/php5子目录里。用来存放配置文件php.ini的位置是/usr/local/php5/lib/子目录。在默认的情况下,这个文件是不存在的——PHP 5将按照它的默认配置来运行。与PHP有关的*.ini文件的模板可以在/usr/local/src/php5.n子目录里找到。
4. 改变Apache配置,重新启动Apache
接下来的工作是修改Apache服务器的配置文件/etc/httpd/conf/httpd.conf,让Apache能够找到和使用PHP 5模块。修改工作很简单,用一个文本编辑器打开httpd.conf文件,把下面代码中的黑体字部分添加到里面即可:

然后,重新启动Apache服务器,这样它才可以使用那个模块:
![]()
如果想测试PHP是否工作正常,在/var/www/html/子目录里创建一个名为phptest.php的文件,并把以下内容写入该文件;这个文件对Apache账户nobody必须是可读的:
![]()
现在,用Web浏览器打开http://localhost/phptest.php页面。应该看到如图2-10所示的画面。

图2-10 Red Hat Enterprise Linux 4环境下的PHP测试页面





