FreeBSD Porter's Handbook
Prev | Chapter 6 Special Considerations | Next

# 6.12 Web Applications, Apache and PHP

## 6.12.1 Apache

Table 6-17. Variables for Ports That Use Apache

`USE_APACHE` | The port requires Apache. Possible values: `yes` (gets any version), `2.0`, `2.2`, `2.0+`, etc. Default dependency is on version `2.2`.
`WITH_APACHE2` | This variable is deprecated and should not be used anymore.
`APXS` | Full path to the `apxs` binary. Can be overridden in your port.
`HTTPD` | Full path to the `httpd` binary. Can be overridden in your port.
`APACHE_VERSION` | The version of present Apache installation (read-only variable). This variable is only available after inclusion of `bsd.port.pre.mk`. Possible values: `20`, `22`.
`APACHEMODDIR` | Directory for Apache modules. This variable is automatically expanded in pkg-plist.
`APACHEINCLUDEDIR` | Directory for Apache headers. This variable is automatically expanded in pkg-plist.
`APACHEETCDIR` | Directory for Apache configuration files. This variable is automatically expanded in pkg-plist.

Table 6-18. Useful Variables for Porting Apache Modules

`MODULENAME` | Name of the module. Default value is `PORTNAME`. Example: `mod_hello`
`SHORTMODNAME` | Short name of the module. Automatically derived from `MODULENAME`, but can be overridden. Example: `hello`
`AP_FAST_BUILD` | Use `apxs` to compile and install the module.
`AP_GENPLIST` | Also automatically creates a `pkg-plist`.
`AP_INC` | Adds a directory to a header search path during compilation.
`AP_LIB` | Adds a directory to a library search path during compilation.
`AP_EXTRAS` | Additional flags to pass to `apxs`.

## 6.12.2 Web Applications

Web applications should be installed into ``PREFIX`/www/`appname``. For your convenience, this path is available both in `Makefile` and in `pkg-plist` as `WWWDIR`, and the path relative to `PREFIX` is available in `Makefile` as `WWWDIR_REL`.

The user and group of web server process are available as `WWWOWN` and `WWWGRP`, in case you need to change the ownership of some files. The default values of both are `www`. If you want different values for your port, use `WWWOWN?= myuser` notation, to allow user to override it easily.

Do not depend on Apache unless the web app explicitly needs Apache. Respect that users may wish to run your web app on different web server than Apache.

## 6.12.3 PHP

Table 6-19. Variables for Ports That Use PHP

`USE_PHP` | The port requires PHP. The value `yes` adds a dependency on PHP. The list of required PHP extensions can be specified instead. Example: `pcre xml gettext`
`DEFAULT_PHP_VER` | Selects which major version of PHP will be installed as a dependency when no PHP is installed yet. Default is `5`. Possible values: `4`, `5`
`IGNORE_WITH_PHP` | The port does not work with PHP of the given version. Possible values: `4`, `5`
`USE_PHPIZE` | The port will be built as a PHP extension.
`USE_PHPEXT` | The port will be treated as a PHP extension, including installation and registration in the extension registry.
`USE_PHP_BUILD` | Set PHP as a build dependency.
`WANT_PHP_CLI` | Want the CLI (command line) version of PHP.
`WANT_PHP_CGI` | Want the CGI version of PHP.
`WANT_PHP_MOD` | Want the Apache module version of PHP.
`WANT_PHP_SCR` | Want the CLI or the CGI version of PHP.
`WANT_PHP_WEB` | Want the Apache module or the CGI version of PHP.

## 6.12.4 PEAR Modules

Porting PEAR modules is a very simple process.

Use the variables `FILES`, `TESTS`, `DATA`, `SQLS`, `SCRIPTFILES`, `DOCS` and `EXAMPLES` to list the files you want to install. All listed files will be automatically installed into the appropriate locations and added to `pkg-plist`.

Include `${PORTSDIR}/devel/pear/bsd.pear.mk` on the last line of the `Makefile`.

Example 6-6. Example Makefile for PEAR Class

    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>

Prev | Home | Next
Using Java | Up | Using Python

For questions about the FreeBSD ports system, e-mail <ports@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.