6.12 Web 应用, Apache 和 PHP

6.12.1 Apache

表 6-17. 用到 Apache 的 port 可以使用的变量

USE_APACHE 此 port 需要 Apache。 可用的值: yes (任意可用版本)、 1.32.02.22.0+、 等等。 默认依赖的版本是 1.3
WITH_APACHE2 此 port 需要 Apache 2.0。 如果没有这个变量, 则 port 将依赖 Apache 1.3。 这一变量目前已经过时, 因而不应继续使用。
APXS apxs 可执行文件的完整路径。 您可以在 port 中替代该值。
HTTPD httpd 可执行文件的完整路径。 您可以在 port 中替代该值。
APACHE_VERSION 目前系统中安装的 Apache 版本 (只读变量)。 这一变量只有在引用了 bsd.port.pre.mk 之后才能使用, 其可能的值为: 132022
APACHEMODDIR Apache 模块所在的文件夹。 在 pkg-plist 中, 这一变量会自动展开。
APACHEINCLUDEDIR Apache 头文件所在的文件夹。 在 pkg-plist 中, 这一变量会自动展开。
APACHEETCDIR Apache 配置文件所在的文件夹。 在 pkg-plist 中, 这一变量会自动展开。

表 6-18. 在移植 Apache 模块时比较有用的变量

MODULENAME 模块的名称。 默认值为 PORTNAME。 例如: mod_hello
SHORTMODNAME 模块的简略名字。 默认情况下会自动根据 MODULENAME 计算, 但您也可以自行设置值来替代它。 例如: hello
AP_FAST_BUILD 使用 apxs 来编译和安装模块。
AP_GENPLIST 同时自动创建 pkg-plist
AP_INC 在编译过程中, 将指定的目录加入到搜索头文件的目录中。
AP_LIB 在编译过程中, 将指定的目录加入到搜索函数库的目录中。
AP_EXTRAS 传递给 apxs 的额外参数。

6.12.2 Web 应用

  Web 应用程序应安装到 PREFIX/www/应用程序的名字。 为方便起见, 这个路径在 Makefilepkg-plist 均以 WWWDIR 变量的形式提供。 在 Makefile 中可以使用 WWWDIR_REL 来表示包含了 PREFIX 的该变量值。

  web 服务器进程所用的用户和用户组, 分别以 WWWOWNWWWGRP 变量的形式提供, 如果您需要修改某些文件的属主的话。 这两个变量的默认值均为 www。 如果您的 port 希望使用其他值, 请使用 WWWOWN?= myuser 这种写法, 以便让用户能够更容易地修改它。

  除非您的 port 必需使用 Apache, 否则不要将其写入依赖关系。 请尊重运行您的应用程序的用户选择 Apache 以外的其他 web 服务器的需求。

6.12.3 PHP

表 6-19. 用到 PHP 的 port 中可以使用的变量

USE_PHP 此 port 需要 PHP。 取值为 yes 将把 PHP 加入依赖关系。 此外, 还可以在此指定将所需要的 PHP 扩展模块。 例如: pcre xml gettext
DEFAULT_PHP_VER 选择在没有安装 PHP 时自动安装的 PHP 主版本。 默认是 4。 可选 45 之一。
IGNORE_WITH_PHP 此 port 无法与给定版本的 PHP 一同工作。 可选值为 45 之一。
USE_PHPIZE 此 port 将作为 PHP 扩展模块进行联编。
USE_PHPEXT 此 port 将作为 PHP 扩展, 且需要作为扩展模块注册。
USE_PHP_BUILD 联编依赖于 PHP。
WANT_PHP_CLI 希望使用 CLI (命令行) 版本的 PHP。
WANT_PHP_CGI 希望使用 CGI 版本的 PHP。
WANT_PHP_MOD 希望使用 Apache 模块版本的 PHP。
WANT_PHP_SCR 希望使用 CLI 或 CGI 版本的 PHP。
WANT_PHP_WEB 希望使用 Apache 模块或 CGI 版本的 PHP。

6.12.4 PEAR 模块

  移植 PEAR 模块的过程非常简单。

  使用 FILESTESTSDATASQLSSCRIPTFILESDOCS 以及 EXAMPLES 这些变量来指明您希望安装的文件。 所有这里列出的文件都会自动安装到合适的位置, 并加入 pkg-plist

  在 Makefile 文件的最后一行引入 ${PORTSDIR}/devel/pear/bsd.pear.mk

例 6-5. 用于 PEAR 类的 Makefile 例子

PORTNAME=       Date
PORTVERSION=    1.4.3
CATEGORIES=     devel www pear

MAINTAINER=     example@domain.com
COMMENT=        PEAR Date and Time Zone Classes

BUILD_DEPENDS=  ${PEARDIR}/PEAR.php:${PORTSDIR}/devel/pear-PEAR
RUN_DEPENDS=    ${BUILD_DEPENDS}

FILES=          Date.php Date/Calc.php Date/Human.php Date/Span.php     \
                Date/TimeZone.php
TESTS=          test_calc.php test_date_methods_span.php testunit.php   \
                testunit_date.php testunit_date_span.php wknotest.txt   \
                bug674.php bug727_1.php bug727_2.php bug727_3.php       \
                bug727_4.php bug967.php weeksinmonth_4_monday.txt       \
                weeksinmonth_4_sunday.txt weeksinmonth_rdm_monday.txt   \
                weeksinmonth_rdm_sunday.txt
DOCS=           TODO
_DOCSDIR=       .

.include <bsd.port.pre.mk>
.include "${PORTSDIR}/devel/pear/bsd.pear.mk"
.include <bsd.port.post.mk>
若您有关于 FreeBSD ports 系统的问题, 请发送电子邮件至 <ports@FreeBSD.org>。
关于此文档的任何问题, 请致函 <doc@FreeBSD.org>。