PHP 手册
后退 | 章 4. Unix 系统下的安装 | 前进

# Unix 系统下的 Apache 2.0

本节包括在 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 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。
> 以上版本的 PHP 与 Apache 2.0.40 或更高版本兼容。

> 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”替换为相应的版本号。

例子 4-4. 安装说明（Apache 2 共享模块版本）

    1.  gzip -d httpd-2_0_NN.tar.gz
    2.  tar xvf httpd-2_0_NN.tar
    3.  gunzip php-NN.tar.gz
    4.  tar -xvf php-NN.tar
    5.  cd httpd-2_0_NN
    6.  ./configure --enable-so
    7.  make
    8.  make install

        现在已经将 Apache 2.0.NN 安装在 /usr/local/apache。本安装支持可装载模块
        和标准的 MPM prefork。之后，可以使用如下命令启动 Apache 服务器：
        /usr/local/apache2/bin/apachectl start
        如果成功，可以停止 Apache 服务器并继续安装 PHP：
        /usr/local/apache2/bin/apachectl stop.

    9.  cd ../php4-NN

    10. 现在需要配置 PHP。在这里可以用各种各样的参数来自定义PHP，例如启动哪些
        扩展功能包的支持等。用 ./configure --help 命令可以列出当前可用的所有参
        数。在此例中，将给出一个在有 MySQL 支持的 Apache 2 上进行配置的范例。
        用户本地的 apxs 的路径可能会不同，事实上，在用户的系统中，它可能被命名为
        apxs2。

        ./configure --with-apxs2=/usr/local/apache2/bin/apxs

    11. make
    12. make install

        如果决定在安装后改变配置选项，只需重复最后的三步，然后需要重新启动 Apache
        使新模块生效。无需重新编译。

        请注意，除非明确有提示，否则“make install”命令将安装 PEAR、各种 PHP 工具
        诸如 phpize，安装 PHP CLI 等等。

    13. 配置 php.ini

        cp php.ini-dist /usr/local/lib/php.ini

        可以编辑 php.ini 文件以修改 PHP 的选项。如果想要把此文件放到另外的位置，
        需要在步骤 10 添加 --with-config-file-path=/path 选项。

        如果选择 php.ini -recommended，请务必阅读其中的变更的列表，它们将影响
        PHP 的执行。

    14. 编辑 httpd.conf 文件以调用 PHP 模块。LoadMolude 表达式右边的路径必须指向
        系统中的 PHP。以上的 make install 命令可能已经完成了这些，但务必要检查。

        对于 PHP 4：
           LoadModule php4_module modules/libphp4.so

        对于 PHP 5：
           LoadModule php5_module modules/libphp5.so

    15. 告知 Apache 将特定的扩展名解析成 PHP，例如，让 Apache 将扩展名 .php
        解析成 PHP。可以将任何扩展名指定为 PHP，只需添加它们，每一个用空格分隔。
        例如，要添加 .phtml：

        AddType application/x-httpd-php .php .phtml

        通常还将 .phps 扩展名设置成显示高亮的 PHP 源文件，可以这样来完成：

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

    16. 启动 Apache 服务器：
       /usr/local/apache2/bin/apachectl start

按照上面的步骤便可以使 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。

后退 | 起点 | 前进
Unix 系统下的安装 | 上一级 | Caudium 服务器