在 Gentoo 系统下的安装

本节包含了在 » Gentoo Linux 系统下安装 PHP 的说明和提示。

使用 Portage (emerge)

当可以下载和自己编译 PHP 源代码时,使用 Gentoo 的包系统安装 PHP 是最简单和干净的方法。但如果不熟悉在 Linux 下编译软件,可以使用本节提到的方法。

如果目前为止已经安装好了 Gentoo 系统,可能已经习惯于使用 Portage 了。安装 Apache 和 PHP 与安装其它系统工具没有什么不同。

首先要决定是安装 Apache 1.3.x 还是 Apache 2.x。二者均可使用 PHP,下面的步骤是基于 Apache 1.3.x 的。另一件要考虑的事情是,本地的 Portage 树是否为最新的。如果最近没有更新它,需要首先运行 emerge sync。这样,便可以使用最新稳定版本的 Apache 和 PHP。

现在一切都准备好了,可以参照下面的示例安装 Apache 和 PHP:

例 2.7. Gentoo 下 Apache 1.3 + PHP 的安装示例

# emerge \<apache-2
# USE="-*" emerge php mod_php
# ebuild /var/db/pkg/dev-php/mod_php-<your PHP version>/mod_php-<your PHP version>.ebuild config
# nano /etc/conf.d/apache
 Add "-D PHP4" to APACHE_OPTS

# rc-update add apache default
# /etc/init.d/apache start

可以在 Gentoo 网站上的 » Portage 手册中获得更多关于 emerge 的信息。

如果需要使用 Apache 2,可以在上例中简单的使用 emerge apache 命令。

配置时进行更好的控制

在上一节,PHP 安装时几乎没有安装任何激活的模块。在写本文档时,唯一被激活的模块是 XML,因为 » PEAR 需要它。这可能不是想要的,不久就会发现需要更多激活的模块,例如 MySQL、gettext、GD 等。

当自己从源代码编译 PHP 时,需要使用 configure 激活所需模块。而在 Gentoo 中,只需使用 USE 标记,它会被自动传递到配置脚本中。要了解 USE 标记在 emerge 中是怎么工作的,可以尝试:

例 2.8. 获得所有可用的 USE 标记列表

# USE="-*" emerge -pv php

[ebuild  N    ] dev-php/php-4.3.6-r1  -X -berkdb -crypt -curl -debug -doc
-fdftk -firebird -flash -freetds -gd -gd-external -gdbm -gmp -hardenedphp
-imap -informix -ipv6 -java -jpeg -kerberos -ldap -mcal -memlimit -mssql
-mysql -ncurses -nls -oci8 -odbc -pam -pdflib -png -postgres -qt -readline
-snmp -spell -ssl -tiff -truetype -xml2 -yaz  3,876 kB

可以从输出中看到,PHP 可用使用很多 USE 标记。请仔细查看和选择所需要的标记。如果选择的标记所需的库没有安装,Portage 会自动编译它们。可以再次使用 emerge -pv 命令以了解 Portage 会根据 USE 标记编译哪些内容。例如,如果没有安装 X,而在 USE 标记中包括了 X,Portage 将会首先编译 X,然后再编译 PHP。这会花去好几个小时。

如果要编译 PHP 并使其支持 MySQL、cURL 和 GD,使用的命令为:

例 2.9. 使用 USE 标记安装 PHP

# USE="-* curl mysql gd" emerge php mod_php

在上例中,不要忘记同时 emerge php 和 mod_php。php 是 PHP 的命令行版本,而 mod_php 是 PHP 的 Apache 模块版本。

常见问题

  • 如果浏览 PHP 脚本时看到是 PHP 源代码,而不是其生成的页面,原因可能是忘记编辑 /etc/conf.d/apache 文件。Apache 启动时需要添加 -D PHP4 参数。要了解是否使用了该参数,可以在 Apache 运行之后输入 ps ax | grep apache 命令。
  • 由于某些原因,可能在系统中安装了多个版本的 PHP。如果是这样的话,需要手动 unmerge 旧版本。使用 emerge unmerge mod_php-<old version> 命令。
  • 如果是因为 Java 不能 emerge PHP,尝试在 USE 标记的开始使用 -*。如上面的例子所示。
  • 如果在配置 Apache 和 PHP 的过程中遇到问题,可以使用关键字“Apache PHP”搜索 » Gentoo 论坛