这一章你将学习如何安装和配置PHP,还能在这个过程中学习如何安装Apache Web服务器。如果你没有可以自己支配的可操作Apache/PHP服务器,这里介绍的内容将对使用后面章节中的示例非常重要。不仅如此,你还能从中积累经验。本章将学习以下内容:
● 如何在UNIX和Windows平台上安装Apache和PHP(作为Apache服务器模块);
● 如何测试安装,确保所有组件能够正常运行;
● 常见的安装隐患和解决方案;
● PHP最常用的配置指令,介绍这些配置指令的用途、作用域和默认值;
● 修改PHP配置指令的各种方法。
2.1 安装
本节将一步步地完成所有必要的步骤来安装一个能实际运行的Apache/PHP服务器。在这一节的最后,你就能执行PHP脚本,并在浏览器中查看执行的结果。
2.1.1 获得发行包
在开始安装之前,需要下载源代码。本节将介绍如何进行下载源代码。
1. 下载Apache
Apache的普及和开源许可几乎让所有UNIX开发人员都在其各自的发行包中加入了这个软件。但是,由于Apache发布新版本的速度很快,你应当访问Apache网站,下载最新的版本。写这本书时,以下这个页面列出了53个不同地区的260个镜像:
![]()
浏览这个页面,点击适当的链接来选择合适的镜像。弹出的页面会包含Apache软件基金会(Apache Software Foundation)资助的所有项目。选择httpd链接,你看到的页面将包括最新的Apache版本和各种相关的项目及工具。发行包有两种格式:
● 源代码:如果你的目标服务器平台是UNIX,就要考虑下载源代码。虽然使用一种方便的二进制版本肯定没错,但花一些时间学习如何编译源代码将会给你的配置带来更大的灵活性。如果你的目标平台是Windows,而且你也希望编译源代码,要注意可以下载另一个用于Win32平台的源代码。但是需要说明,本章不讨论Win32源代码的安装过程,而会重点介绍更常用的(也是推荐的)二进制安装程序。
● 二进制:在写本书时,已经有可用于15种操作系统的二进制版本。如果你的目标平台是Windows,要考虑下载相应的二进制版本。对于其他平台,请考虑编译源代码,因为从长远来看,源代码发行包能提供更大的灵活性。
注解 在编写本书时,提供SSL支持的Apache 2 Win32二进制版本尚不可用,但等你读到这本书时可能就可用了。不过,倘若仍然不可用,而你确实需要Windows上的SSL支持,就需要从源代码构建。
那么,应当下载哪个Apache版本呢?虽然Apache 2早在三年多之前就已经发行,但版本1.X仍在广泛使用。事实上,大多数共享服务器ISP还没有移植到版本2.X。不愿升级并不是说版本2.X有问题,这只是因为版本1.X相当稳定,而且提供了强大的功能。对于标准应用程序,几乎觉察不出两个版本之间的外部区别,因此要考虑使用Apache 2,利用其更强的稳定性。事实上,如果你计划在Windows下运行Apache来进行开发或部署,那么推荐你选择版本2,因为它完全重写了之前的Windows发行包,比以前的版本更加稳定。
2. 下载PHP
虽然现在大多数Linux发行包都捆绑了PHP,你还是应当从PHP网站下载最新的稳定版本。为减少下载时间,请从位于50多个国家和地区的100多个官方镜像中选择下载,这个列表位于:http://www.php.net/mirrors.php。
选择与你最近的镜像之后,浏览下载页面,在以下3种发行包中选择一种:
● 源代码:如果目标服务器平台是UNIX,或者计划在Windows平台上编译源代码,就请选择这种发行包格式。并不推荐在Windows上从源代码行构建,本书也不讨论这个内容。除非你的具体情况确实需要特定的配置,否则,预构建的Windows二进制版本都能满足需要。这种发行包以bz2和gz格式压缩。记住其内容是相同的;不同的压缩格式只是为了方便你使用。
● Windows下的zip包:这种二进制包包括CGI二进制包和各种服务器模块。如果你计划在Windows中结合使用PHP和Apache,就应当下载这种发行包,因为它将作为后面的安装指南的重点。
● Windows下的安装程序:它只包括CGI二进制包,为安装和配置PHP提供了一个方便的Windows安装程序界面,支持IIS、PWS和Xitami服务器的自动配置。虽然也可以与Apache一起使用,但不推荐这种做法。倘若要与Apache一起使用,请选择Windows下的zip包版本。
如果你有兴趣使用最新的PHP开发快照,可以从http://snaps.php.net/下载源代码和二进制版本。要记住,这个网站提供的一些版本不能用于生产阶段。
2.1.2 安装过程
因为本章的主要内容是PHP,而不是Apache服务器,所以Apache构建过程中的许多特性不在这一章深入讨论,这超出了本章的范围。如果想了解有关这些特性的更多信息,请花一些时间研读一下Apache文档,或者请参考Peter Wainwright所著的Pro Apache, Third Edition (Apress,2004)。
注解 PHP和MySQL的许可存在冲突,所以已经从PHP 5中去除了MySQL库。因此,要同时使用PHP 5和MySQL,需要采取一些必要的步骤,使PHP 5能使用MySQL库。第25章将更详细地讨论这个内容。此外,一定要仔细阅读本章中关于使用PHP和MySQL的许可信息。
1. 在Linux/UNIX上安装Apache和PHP
本节将指导你从源代码构建Apache和PHP,目标平台是UNIX。你需要一个成熟的ANSI-C编译器和构建系统,这是大多数发行包中都很常见的两个工具。此外,PHP需要Flex(http://www.gnu.org/software/flex/flex.html)和Bison(http://www.gnu.org/software/ bison/bison.html)包,而Apache至少需要Perl 5.003。再次说明,大多数(甚至全部)现代UNIX平台上都有这3个工具。最后,要求在目标服务器上有root权限才能完成构建过程。
为方便起见,开始安装过程之前,可以考虑将两个包移在一个相同的位置,比如/usr/src/。安装过程如下:
(1) 解压Apache和PHP:

(2) 配置和构建Apache。最少需要两个选项。第一个是--enable-so,它告诉Apache启用加载共享模块的功能。第二个是--with-mpm=worker,它告诉Apache使用称为worker的多线程化多处理模块。根据特定的需要,还可能考虑使用多处理模块prefork。更多有关信息请参见Apache文档。
![]()
(3) 安装Apache:
![]()
(4) 配置、构建和安装PHP(如果要了解如何修改默认安装,以及如何在PHP中结合第三方扩展,根据不同的操作系统,有关信息请参见2.1.4节或2.1.5节):
![]()
注意 PHP的UNIX版本依赖于一些工具才能正确地编译,如果服务器上没有这些工具,配置过程就会失败。其中最有名的包,包括Bison解析器生成器、Flex词法分析生成器、GCC编译器集合,以及m4宏处理器。遗憾的是,很多发行包在自动安装这些工具时会失败,必须在安装操作系统时或在安装PHP之前手动地增加这些包。因此,如果出现关于这些包的错误,记住这是很正常的,只要按必要的步骤在系统中安装这些包就可以。
(5) 将php.in-dist文件复制到默认位置,把它重命名为php.ini。php.ini文件包含了几百个负责调整PHP行为的指令。2.2节将详细介绍php.ini的作用和内容。需要指出,可以把这个配置文件放在任意位置,但是如果没有把它放在默认位置上,则需要使用--with-config-file-path选项来配置PHP。注意,还有一个可由你自己支配的默认配置文件:php.ini-recommended。这个文件用于配置各种非标准的设置,使得你的安装更加安全和优化,不过,这个配置可能与一些遗留的应用程序不完全兼容。可以考虑用这个文件代替php.in-dist。
![]()
(6) 打开httpd.conf文件,验证其中有下面几行代码(httpd.conf文件位于APACHE_INSTALL_ DIR/conf/httpd.conf)。如果没有这几行,就把以下代码添加到httpd.conf文件中,可以分别放在其他LoadModule和AddType项的后面。
![]()
不管你相信与否,安装就这么简单!用以下命令重启Apache服务器:
![]()
接下来可以看2.1.3节。
提示 第(6)步中的AddType指令将一个MIME类型绑定到某个或某些扩展名。.php扩展名只是一种建议;你可以使用任何扩展名,包括.html、.php5,甚至.jason。此外,还可以指定多个扩展名,只要所有扩展名都包括在一行中,并用空格分隔即可。有些用户使用PHP时喜欢用.html扩展名,要记住,这样最终会导致一个后果,每次请求HTML文件时都会把文件交由PHP解析。也许有些人会认为这样方便,但这会以性能下降为代价。
2. 在Windows上安装Apache和PHP
以前基于Windows的Apache版本没有针对Windows平台进行优化,不过,Apache 2的Win32版本经过了完全重写,以利用Windows平台特有的特性。即使你不准备在Windows上部署应用程序,但对于那些希望使用Windows而不是其他平台的用户来说,这提供了一个极好的本地化测试环境。安装过程如下:
(1) 双击apache_X.X.XX-win32-x86-no_ssl.msi图标,启动Apache安装程序。
(2) 安装过程以一个欢迎屏幕开始。花点时间阅读一下这个屏幕,然后点击Next。
(3) 接下来显示许可协议。仔细阅读整个许可协议。如果你同意许可条款,点击Next。
(4) 接下来显示的屏幕中包含了与Apache服务器有关的各项。花点时间阅读一下这些信息,然后点击Next。
(5) 你将看到一些与服务器操作有关的项,包括网络域、服务器名和管理员Email地址。如果你知道这些信息,现在就请填上;否则,就在前两项中使用localhost,最后一项可以先填写一个任意的电子邮件地址。以后可以在httpd.conf文件中修改这些信息。安装程序还会提示你希望为所有用户提供Apache服务,还是仅作为当前用户的服务。如果你希望Apache自动与操作系统一起启动(推荐做法),就请选择将Apache作为所有用户的服务。完成设置后,点击Next。
(6) 安装程序会提示你选择安装类型:典型或定制。除非有特殊的原因你不想安装Apache文档,否则请选择典型安装,并点击Next。如果不安装文档,请选择定制,点击Next,在下一个屏幕中,取消Apache Document选项。
(7) 安装程序提示你选择目标文件夹。默认情况下为C:\Program Files\Apache Group。可以修改为C:\,这样就会创建一个安装目录C:\Apache2\。无论选择什么目录,要记住,本章为了方便将使用C:\Apache2\目录。点击Next。
(8) 点击Install完成安装。以上是Apache的安装过程。下面要安装PHP。
(9) 解压PHP包,将内容放在C:\php5\上。你可以选择任何所希望的安装目录,但是要避免使用包含空格的路径。为保持一致,本章将使用C:\php5\作为安装目录。
(10) 使Apache能够使用php5ts.dll文件。最简单的办法是,将PHP安装路径增加到Window的Path环境变量中。为此,找到开始→设置→控制面板→系统,选择“高级”标签,点击环境变量按钮。在环境变量对话框中,滚动系统变量面板,直到找到Path。双击这一行,在编辑系统变量对话框中,将C:\php5追加到路径中,如图2-1所示。

图2-1 修改Windows的Path
(11) 切换到C:\apache2\conf,打开httpd.conf进行编辑。
(12) 向httpd.conf文件增加以下3行内容。可以紧挨着增加到LoadModule块的下面,这个块位于Global Environment部分的最后。
![]()
提示 第(12)步的AddType指令将一个MIME类型绑定到某个或某些扩展名。.php扩展名只是一种建议;你可以使用任何扩展名,包括.html、.php5,甚至.jason。此外,还可以指定多个扩展名,只要所有扩展名都包括在一行中,并用空格分隔即可。有些用户使用PHP时喜欢用.html扩展名,要记住,这样最终会导致一个后果,每次请求HTML文件时都会把文件交由PHP解析。也许有些人会认为这样方便,但这会以性能下降为代价。
(13) 将php.ini-dist文件重命名为php.ini,保存到C:\php5目录。php.ini文件包含很多负责调整PHP行为的指令。2.2节将详细介绍php.ini的作用和内容。需要指出,可以将这个配置文件放在任何位置,但如果选择了非默认的位置,就需要使用--with-config-file-path选项配置PHP。注意,还有一个可由你自己支配的默认配置文件:php.ini-recommended。这个文件用于配置各种非标准的设置,使得你的安装更加安全和优化,不过这个配置可能与一些遗留的应用程序不完全兼容。可以考虑用这个文件代替php.in-dist。
(14) 如果使用Windows NT、2000或XP,请找到开始→设置→控制面板→管理工具→服务。
(15) 在列表中找到Apache,确认它已经启动。如果没有启动,请点亮这个标签,点击位于标签左边的“启动服务”图标。如果已经启动,则点亮标签,点击“重新启动服务”按钮,这样对httpd.conf文件的修改就会生效。接下来,右键点击Apache,选择属性。确保启动类型设置为“自动”。如果你仍在使用Windows 95/98,则需要通过开始菜单中的快捷方式手动地启动Apache。
2.1.3 测试安装
要验证PHP是否成功安装,最好的办法就是尝试执行一个PHP脚本。打开文本编辑器,增加以下内容。然后将这个文件保存到Apache的htdocs目录中,命名为phpinfo.php:
![]()
现在打开浏览器,键入URL访问这个文件:
![]()
如果一切正常,应当能看到与图2-2类似的结果。

图2-2 PHP phpinfo()函数的输出
提示 phpinfo()函数会提供与PHP安装有关的一组有用的信息。
救命!出现了一个错误!
即使在构建过程中没有遇到明显的错误,也有可能看不到phpinfo()漂亮的输出,对此可能有以下几个原因:
● 在构建过程结束后没有启动或重新启动Apache。
● phpinfo.php文件中存在输入错误。如果浏览器中出现一条解析错误消息,那么几乎可以肯定原因就在这里。
● 构建过程中出现了错误。可以重新构建(或在Windows上重新安装),仔细查看出现的错误。如果运行的是Linux/UNIX,在重新配置和重新构建之前,不要忘记从每个分发目录执行一次make clean。
2.1.4 定制UNIX构建
虽然基本PHP安装对大多数初级用户来说已经足够了,但你可能很快就希望对默认的配置做一些调整,还有可能希望尝试一些第三方扩展(默认发行包中没有这些扩展包)。通过执行下面的命令,可以看到配置选项(200余个)的完整列表:
![]()
要对构建过程进行调整,只需要向PHP的configure命令增加一个或多个参数,必要时还要提供相应的值。例如,假定你希望启用PHP的FTP功能(这个功能默认情况下是禁用的),只需如下修改PHP构建过程的配置步骤:
![]()
再举一个例子,假定你希望启用PHP的Java扩展,只需修改第4步:
![]()
对于新手来说,通常会有一个误解,认为只要包含额外的标志就能通过PHP自动得到这个功能,实际上可不一定。要记住,还需要安装最终负责启用扩展包支持的软件。对于前面启用Java扩展包的例子,就需要安装Java开发包(JDK)。
2.1.5 定制Windows构建
PHP的Windows安装总共有45个扩展包,都位于INSTALL_DIR\ext\目录下。但是,要真正使用这些扩展包,需要取消php.ini文件中的相应注释。例如,如果希望启用PHP的IMAP扩展,需要在php.ini文件中做两个很小的调整:
(1) 打开位于Windows目录下的php.ini文件。要确定php.ini文件在哪一个目录下,请参见2.1.2节中“在Windows上安装Apache和PHP”的第(13)步。找到extension_dir指令,将其赋为C:\php5\ext\。如果你在其他目录中安装PHP,则要做相应修改。
(2) 找到下面这行代码:;extension=php_imap.dll。删除前面的分号,取消这一行的注释。保存并关闭文件。
(3) 重新启动Apache,就可以在PHP中使用这个扩展了。要记住,有些扩展在正常使用前还需要做更多的修改。对php.ini文件的讨论请参见2.2节。
2.1.6 常见错误
第一次在线访问PHP页面时,经常会遇到一些初级的问题。这一节将讨论其中最常见的一些问题:
● 修改Apache的配置文件后,在重新启动前并不会立即生效。因此,在向这个配置文件增加了必要的PHP内容后,要确保重启Apache。
● 修改Apache的配置文件时,可能偶尔会引入非法字符,导致Apache无法重启。如果Apache无法启动,请查看一下你所做的修改。
● 验证文件的扩展名确实是httpd.conf文件中所指定的PHP特定扩展名。例如,如果只定义了.php作为可识别的扩展名,就不要在.html中嵌入PHP代码。
● 确保已经在文件中界定了PHP代码,否则这些代码会输出到浏览器。
● 创建名为index.php的文件后,力图作为默认目录索引来调用时,将不会成功。请记住,默认情况下Apache只能识别index.html。因此,需要向Apache的DirectoryIndex指令增加index.php。
2.1.7 查看并下载文档
Apache和PHP项目都提供了示范文档,非常详细地涵盖了这两种技术的几乎每一个方面。可以分别在http://httpd.apache.org/和http://www.php.net/查看最新的版本,或者下载到本地计算机上进行阅读。
1. 下载Apache手册
每个Apache分行包都附有XML和HTML格式的最新文档,共提供了6种语言(英语、法语、德语、日语、韩语和俄语)的版本。该文档位于安装根目录的docs目录下。
如果需要升级本地版本,或需要其他格式的版本,如PDF、Microsoft帮助(CHM),或者需要在线浏览,请访问以下网站:
![]()
2. 下载PHP手册
有24种语言的PHP文档,而且有各种格式,包括单个HTML页面,多个HTML页面,Microsoft HTML帮助(CHM)格式,以及扩展HTML帮助格式。这些版本都由基于Docbook的主文件生成。如果需要转换为其他的格式,可以在PHP项目的CVS服务器获得这些文件。PHP文档位于安装根目录的manual目录下。
如果需要升级本地版本,或者需要其他格式的版本,请访问以下页面并点击适当的链接:
![]()







