Apache Compile HOWTO
Prev |  | Next

# 6. mod_php and its prerequisites

## 6.1. What is mod_php

| PHP is a server-side, cross-platform, HTML embedded scripting language. In the beginning it was just a simple guestbook-processor, and it was growing and growing Since Version 3 it is really powerful Webdevelopment-language |
--www.php.net |

Since Version 4 PHP capable and robust enough for enterprise webapplications. It is powerful, supports almost all important databases natively, and other through ODBC (Open DataBase Connectivity). It a few times faster than ASP on Windows Systems on the same Hardware.

There are other extensions available like APC (Alternative PHP Cache), which speed up processing about 50-400% (depends on the php-code you wrote)

## 6.2. Prerequisites

Depending on your needs there are some software to install first. One already installed Software according this document is MySQL, because its needed by mod_auth_mysql.

### 6.2.1. IMAP client

#### 6.2.1.1. What is IMAP client

IMAP means »Internet Mail Application Protocol« and is a substitute for the POP (Post Office Protocol) protocol. It allows to keep all Mails in different folders on the server, which (should) be backed up - Never again lose important email, because your local harddrive crashed

### 6.2.2. Download the source

Origin-Site:

Origin-Site: http://www.washington.edu/imap/

### 6.2.3. Building and installing

    cd /usr/local

    tar -xvfz imap.tar.Z

    cd imap

    make slx SSLTYPE=nopwd

  With the parameter `SSLTYPE=unix` you define if you need SSL support or not. Omitting means no SSL support.

| Filename to download
| imap.tar.Z is usually a symlink to the latest release, today its linked to imap-2001a.tar.Z

### 6.2.4. PostgreSQL

#### 6.2.4.1. What is PostgreSQL

PostgreSQL is a very powerful and fast Database

Like MySQL wonderful for Webapplications. From my Point of view, not as comfortable to handle as MySQL. If your Webapplication performs mostly writes, or you need proofed transaction-capabilities, PostgreSQL is your friend

#### 6.2.4.2. Download the source

Origin-Site: http://www.postgresql.org (Select a mirror close to you)

#### 6.2.4.3. Building and installing

    cd /usr/local

    tar -xvzf postgresql-7.3.2.tar.gz

    cd postgresql-7.3.2

    ./configure \
    --with-perl \
    --enable-odbc \
    --with-unixodbc  \
    --with-pam \
    --with-openssl \

    make
    make install

    echo /usr/local/pgsql/lib >> /etc/ld.so.conf

    ldconfig

### 6.2.5. Sablotron

#### 6.2.5.1. What is Sablotron

| Sablotron is a fast, compact and portable XML toolkit implementing XSLT 1.0, DOM Level2 and XPath 1.0. Sablotron is an open project; other users and developers are encouraged to use it or to help us testing or improving it. The goal of this project is to create a lightweight, reliable and fast XML library processor conforming to the W3C specification, which is available for public and can be used as a base for multi-platform XML applications. |
--http://www.gingerall.com/charlie/ga/xml/p_sab.xml |

#### 6.2.5.2. Download the source

Origin-Site: http://download-2.gingerall.cz/download/sablot/Sablot-0.97.tar.gz

#### 6.2.5.3. Building and installing

    tar -xvzf Sablot-0.97.tar.gz
    cd Sablot-0.97

    ./configure
    make
    make install

    ldconfig

### 6.2.6. pdflib

#### 6.2.6.1. What is pdflib

| PDFlib: A library for generating PDF on the fly PDFlib is the premier software component if you want to generate PDF on your server, convert text and graphics, or implement PDF output in your own products. |
--www.pdflib.com |

From the authors point of view:

| This is a commercial product
| PDFLIB is a commercial Product. Read the license carefully to see if you need a commercial license or not

#### 6.2.6.2. Download the source

Origin-Site: http://www.pdflib.com/pdflib/download/pdflib-4.0.3.tar.gz

#### 6.2.6.3. Building and installing

    cd /usr/local/
    tar -xvzf pdflib-4.0.3.tar.gz

    cd pdflib-4.0.3

    ./configure --enable-shared-pdflib --enable-cxx

    make
    make install

    ldconfig

### 6.2.7. gettext

#### 6.2.7.1. What is gettext

gettext is a library for i18n (Internationalization, "I", 18 chars and "n") of software, and needed by php

#### 6.2.7.2. Download the source

Origin-Site: ftp://ftp.gnu.org/gnu/gettext (select a mirror close to you)

#### 6.2.7.3. Building and installing

    cd /usr/local

    tar -xvzf gettext-0.11.2.tar.gz

    cd gettext-0.11.2

    ./configure

    make
    make check
    make install

    ldconfig

### 6.2.8. zlib

#### 6.2.8.1. What is zlib

zlib is a lossless data-compression library for use on virtually any computer hardware and operating system

#### 6.2.8.2. Download the source

Origin-Site: ftp://ftp.info-zip.org/pub/infozip/zlib/zlib-1.1.4.tar.gz (select a mirror close to you)

#### 6.2.8.3. Building and installing

    cd /usr/local

    tar -xvzf zlib-1.1.4.tar.gz

    cd zlib-1.1.4/

    ./configure

    make
    make test
    make install

    ldconfig

## 6.3. Building and installing PHP4

    cd /usr/local

    tar -xvzf php-4.3.0.tar.gz

    cd php-4.3.0

    export LDFLAGS=-lstdc++

    ./configure \
    --with-apxs=/usr/local/apache/bin/apxs \
    --with-mysql=/usr/local/mysql \
    --with-pgsql=/usr/local/pgsql \
    --enable-track-vars \
    --with-openssl=/usr/local/ssl \
    --with-imap=/usr/local/imap \
    --with-gd --with-ldap \
    --enable-ftp \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-sockets \
    --with-pdflib=/usr/local \
    --with-gettext \
    --with-mm=/usr/local/mm-1.1.3 \
    --with-jpeg-dir=/usr/lib \
    --with-zlib-dir=/usr/local \
    --enable-wddx \
    --with-mcrypt \
    --with-mhash \
    --with-mcal=/usr \
    --enable-exif \
    --enable-xslt \
    --with-xslt-sablot=/usr/local \
    --with-dom \
    --with-dom-xslt \

Edit the `Makefile` and add `-lstdc++` to the variable `EXTRA_LIBS`. This is currently only needed, when using Sablotron version 0.9.7

    make
    make install

After installing your httpd.conf is modified by axps. It should now look as follows:

    <IfDefine SSL>
    LoadModule ssl_module         libexec/libssl.so
    LoadModule php4_module        libexec/libphp4.so
    </IfDefine>

If you compiled Apache with mod_ssl then the php-module will only be loaded when staring Apache with ssl (apachectl startssl). If you will start Apache without ssl support (but compiled like described in this document) you need to change this:

    <IfDefine SSL>
    LoadModule ssl_module         libexec/libssl.so
    </IfDefine>
    LoadModule php4_module        libexec/libphp4.so

Copy the sample `php.ini-dist` to `/usr/local/lib/php.ini`

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

uncomment (remove the # at begin of line) the following lines in `/usr/local/apache/conf/httpd.conf`

Apache 1.3.27 default httpd.conf does lack of this entries. You have to add them instead of uncommenting

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

    # If you want to display PHP source

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

  This line is only needed if you like to display sourcecodes in the browser. The fileextension of such files should be phps. /para>

| register_globals
| Since PHP Version 4.2.1, »register_globals« are set OFF. This can bring you in problems running PHP-Code not using the $HTTP_GET_VARS methods. To enable register_globals edit the following line in your `/usr/local/lib/php.ini`:
    register_globals = On
Please be sure, if you write new software, to use the new methods. Support of old methods will be dropped sooner or later

Restart Apache by issuing the following command:

    /usr/local/apache/bin/apachectl restart

Prev | Home | Next
Compressed delivery |  | PHP extensions