本节包括在 Unix 平台的 Apache 2.0 下安装 PHP 的说明和提示。
警告 |
不推荐将线程化 MPM 用于实际运作的 Apache 2 环境中去。用 prefork MPM 替代,或者用 Apache 1。其原因见 FAQ 中的使用线程化 MPM 的 Apache2。 |
推荐阅读 Apache 文档,了解一下 Apache 2.0 服务器。
PHP 和 Apache 2.0.x 兼容性注意事项: 已知下列版本的 PHP 可以工作于最近版本的 Apache 2.0.x 之下:
以上版本的 PHP 与 Apache 2.0.40 或更高版本兼容。
- PHP 4.3.0 或更高版本,可从 http://www.php.net/downloads.php 下载。
- 最新的稳定开发版。取得源代码 http://snaps.php.net/php4-latest.tar.gz 或下载 Windows 可执行程序 http://snaps.php.net/win32/php4-win32-latest.zip。
- 预发布版,可从 http://qa.php.net/ 下载。
- 总是可以通过匿名 CVS 取得 PHP。
Apache 2.0 SAPI 支持自 PHP 4.2.0 起。PHP 4.2.3 可工作于 2.0.39,不要用任何其它版本的 Apache 与 PHP 4.2.3 配合。不过推荐的设置是用 PHP 4.3.0 或更高版本与最新版的 Apache2 配合使用。
所有提及的 PHP 版本仍然能工作于 Apache 1.3.x 之下。
下载最新版本的 Apache 2.0,并且根据上文选择合适版本的 PHP 下载。本向导仅包含最基础的内容,只能让 Apache 2.0 和 PHP 能够正常工作。更多信息请阅读 Apache 文档。这里省略所有的版本号,以保证本文的正确性。需要将本文的“NN”替换为相应的版本号。
按照上面的步骤便可以使 Apache 2.0 将 PHP 作为 SAPI 模块了。当然 Apache 和 PHP 都还有很多配置选项,可以在相应的源代码目录中使用 ./configure --help 获得更多信息。假如要编译一个多线程版本的 Apache 2.0,必须覆盖标准的 MPM-Module prefork,或者 worker 或者 perchild。要这样,需要在上面的第 6 步使用 --with-mpm=worker 或者 --with-mpm=perchild 选项。之前需要了解自己在做什么。更多信息请参考 Apache 文档中关于 MPM-Modules 的部分。
注: 如果要使用内容协商(content negotiation)机制,请阅读 Apache MultiViews 常见问题。
注: 要编译多线程版本的 Apache,系统必须支持多线程。这也意味着需要将 PHP 编译为正处在试验阶段的 Zend Thread Safety(ZTS),因此并不是所有的扩展都可以使用了。推荐编译 Apache 使用标准的 prefork MPM-Module。