PHP  
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
search for in the  
<安装前需要考虑的事项Unix 系统下的 Apache 2.0>
Last updated: Mon, 16 Jul 2012

章 4. Unix 系统下的安装

本节将指导您如何在 Unix 系统下安装和配置 PHP。在您开始安装之前,请务必研究您使用的系统和 Web 服务器的相关章节。

安装前需要考虑的事项一节提到,我们在本节主要以 Web 为中心向您介绍的 PHP 的设置。不过本节也会覆盖一些 PHP 命令行用法的设置方法。

在 Unix 平台下安装 PHP 有几种方法:使用配置和编译过程,或是使用各种与编译的包。本文主要针对配置和编译 PHP 的过程。很多 Unix 类系统都有包安装系统,您可以用它来设置一个有着标准配置的 PHP。但是若您需要与标准配置不同的功能(例如一个安全服务器,或者不同的数据库驱动扩展模块),您可能需要编译 PHP 和/或 Web 服务器。如果您不熟悉编译软件,您可以考虑搜索一下是否有人已经编译了包含您需要功能的预编译包。

编译所需的知识和软件:

  • 基础的 Unix 技能(有能力操作“make”和一种 C 语言编译器)

  • 一个 ANSI C 语言编译器

  • flex:版本 2.5.4

  • bison:版本 1.28(推荐)、1.35 或 1.75

  • 一个 Web 服务器

  • 模块特别需要的组件(例如 gd、pdf 库等)

PHP 初始的配置和安装过程被 configure 脚本中一系列命令行选项控制。您可以通过 ./configure --help 命令了解 PHP 所有可用的编译选项及简短解释。本手册是分开对这些选项编写文档的。您可在附录中找到核心配置选项,而扩展模块特定的配置选项分别在其函数参考页面中描述。

配置好 PHP 后,您便可以开始编译模块和/或可执行文件。make 命令用来做这一工作。如果该命令执行失败而您找不到原因,请参考安装问题一节。

Unix 系统下的 Apache 1.3.x

本节包括在 Unix 平台的 Apache 下安装 PHP 的说明和提示。我们在另外的页面也有 Apache 2 的安装和说明

您可以从核心配置选项列表,以及位于手册对应部分的特定扩展配置选项中,选择参数并在安装步骤第 10 步将它们添加到 configure 命令中。版本号在这里被省略了,以保证此说明的正确性。您需要将这里的“xxx”替换为您使用的文件的正确值。

例子 4-1. PHP 的 Apache 共享模块版本安装说明

1.  gunzip apache_xxx.tar.gz
2.  tar -xvf apache_xxx.tar
3.  gunzip php-xxx.tar.gz
4.  tar -xvf php-xxx.tar
5.  cd apache_xxx
6.  ./configure --prefix=/www --enable-module=so
7.  make
8.  make install
9.  cd ../php-xxx
10. 现在,配置您的 PHP。这是您定制 PHP 的不同选项的时候,例如要
    加载哪些扩展库。使用
      ./configure --help
    来列出可用的选项。在下面的示例中我们只是简单地配置 Apache 1
    和 MySQL 支持。您的 apxs 的路径可能和此示例中的不同。
      ./configure --with-mysql --with-apxs=/www/bin/apxs
11. make
12. make install
    如果在安装之后您决定修改配置选项,那么只需重复以上最后三步。
    只须重新启动 Apache 就可以使新模块生效。不需要重新编译 Apache。
    注意除非特别指出,'make install' 总是会安装 PEAR,各种 PHP
    工具例如 phpize,安装 PHP CLI 以及其它。
13. 建立您的 php.ini 文件。
      cp php.ini-dist /usr/local/lib/php.ini
    您可以编辑 php.ini 来设置 PHP 选项。如果您想把 php.ini 放在
    其它目录,在第 10 步加上以下选项:
      --with-config-file-path=/path
    如果您选择了 php.ini-recommended,确保阅读一下其中的变更说明,
    因为这些会影响到 PHP 的行为。
14. 编辑您的 httpd.conf 来加载 PHP 模块。在 LoadModule 语句右边的
    路径必须指向您系统中 PHP 模块所在的路径。上面的 make install
    步骤可能已经添加了,但还是检查确认一下。
    对 PHP 4:
      LoadModule php4_module        libexec/libphp4.so
    对 PHP 5:
      LoadModule php5_module        libexec/libphp5.so
15. 在 httpd.conf 中加入 AddModule 部分,在 ClearModuleList 下面的
    某处,加上这一句:
    对 PHP 4:
      AddModule mod_php4.c
    对 PHP 5:
      AddModule mod_php5.c
16. 告诉 Apache 将哪些后缀作为 PHP 解析。例如,让 Apache 把 .php
    后缀的文件解析为 PHP。可以将任何后缀的文件解析为 PHP,只要在
    以下语句中加入并用空格分开。我们添加一个 .phtml 来示例。
      AddType application/x-httpd-php .php .phtml
    为了将 .phps 作为 PHP 的源文件进行语法高亮显示,还可以加上:
      AddType application/x-httpd-php-source .phps
17. 用您通常的过程启动 Apache。(您必须完全停止 Apache 再重新启动,
    而不是用 HUP 或者 USR1 信号使 Apache 重新加载。)

您也可以将 PHP 作为静态对象来安装:

例子 4-2. PHP 的 Apache 静态模块版本安装说明

1.  gunzip -c apache_1.3.x.tar.gz | tar xf -
2.  cd apache_1.3.x
3.  ./configure
4.  cd ..

5.  gunzip -c php-4.x.y.tar.gz | tar xf -
6.  cd php-4.x.y
7.  ./configure --with-mysql --with-apache=../apache_1.3.x
8.  make
9.  make install

10. cd ../apache_1.3.x

11. ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a
    (上面一行是正确的!是的,我们知道 libphp4.a 在目前不存在。它是不应该存在的。
    它将被创建。)

12. make
    (您现在应该有一个 httpd 二进制文件,您可以将它复制到 Apache bin 目录。如果
    这是您的第一次安装,您还要“make install”。)

13. cd ../php-4.x.y
14. cp php.ini-dist /usr/local/lib/php.ini

15. 您可以编辑 /usr/local/lib/php.ini 文件以设置 PHP 选项。
    编辑您的 httpd.conf 或 srm.conf 文件,添加:
    AddType application/x-httpd-php .php

根据您的 Unix 系统和 Apache 安装方法的不同,有很多方法停止和重启动 Apache。以下是一些不同的 Apache/Unix 下重启动 Apache 的典型命令。您需要把 /path/to/ 替换成您系统上的确切路径。

例子 4-3. 重启动 Apache 的示例命令

1. 在一些 Linux 和 SysV 的变种下:
/etc/rc.d/init.d/httpd restart

2. 使用 apachectl 脚本:
/path/to/apachectl stop
/path/to/apachectl start

3. httpdctl 和 httpsdctl(使用了 OpenSSL),类似 apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start

4. 使用了 mod_ssl,或其他 SSL 服务器,您可能需要手工重启动:
/path/to/apachectl stop
/path/to/apachectl startssl

apachectl 和 http(s)dctl 程序所在的路径在不同系统中通常不一样。如果您的系统中有 locate 或者 whereis 或者 which 命令,那么可以帮您找到这些控制程序。

编译 PHP 和 Apache 的不同例子还有:

./configure --with-apxs --with-pgsql

这个配置将生成在 Apache 的 httpd.conf 文件中用 LoadModule 加载的 libphp4.so 共享库。而 PostgreSQL 支持将嵌入到 libphp4.so 库中。

./configure --with-apxs --with-pgsql=shared

这个配置将生成 Apache 的 libphp4.so 共享库,并且还生成 pgsql.so 共享库,可以在 php.ini 文件中用 extension 指令加载,或者在 PHP 脚本中用 dl() 函数明确地加载。

./configure --with-apache=/path/to/apache_source --with-pgsql

这个配置将生成 libmodphp4.a 库,mod_php4.c 和一些相关的文件并且拷贝到 Apache 源程序目录中的 src/modules/php4 目录下。然后用 --activate-module=src/modules/php4/libphp4.a 编译 Apache,Apache 编译系统会生成 libphp4.a 并且将其静态地连接到 httpd 程序中。PostgreSQL 支持也直接包括在这个 httpd 程序中了,因此最终结果是单一的一个包括了所有 Apache 和 PHP 支持的 httpd 可执行文件。

./configure --with-apache=/path/to/apache_source --with-pgsql=shared

这个配置和上面一样 - 除了没有在最后的 httpd 可执行文件中包括 PostgreSQL 的支持以及生成了一个 pgsql.so 共享库以外。该共享库可以在 php.ini 文件中或者用 dl() 函数加载。

当选择不同的方法编译 PHP 时,需要考虑每种方法的优势和缺点。用共享对象方式编译 PHP 意味着可以单独编译 Apache,并且不用在添加或修改了 PHP 的时候重新编译所有程序。用内置方法编译 PHP(静态方式)意味着 PHP 可以加载和运行得更快。更多信息见 Apache 的 DSO 支持页面

注: Apache 默认的 httpd.conf 文件中目前包括类似如下的内容:

User nobody
Group "#-1"

除非您把它修改成“Group nogroup”或者其它类似的(“Group daemon”也很通用),PHP 将不能打开文件。

注: 确认在使用 --with-apxs=/path/to/apxs 时指向 Apache 安装后的目录中的 apxs。绝对不能用 Apache 源程序中的 apxs 而要用安装后的 apxs。




<安装前需要考虑的事项Unix 系统下的 Apache 2.0>
 Last updated: Mon, 16 Jul 2012
 
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: http://manual.phpv.net/
Last updated: Thu Jul 7 19:13:47 2005 CST