Installing Apache with SSL 128 bit Encryption with PHP4 on Redhat Linux 7.1
Install with custom certificate

On our installation, the sources for
Apache, SSL, and PHP are all under /https. Apache binaries
are under /usr/local/apache. HTML *and* PHP files must go under
/usr/local/apache/htdocs. CGI-BIN scripts need to go under
/usr/local/apache/cgi-bin.

Note: This may not be the most efficient way of installing 
apache-ssl-php, but it *works*

1.  Obtaining all necessary code (links go to download from this server, or use URL if available):
$ cd /https

$ lynx http://httpd.apache.org/dist/httpd/apache_1.3.20.tar.gz
$ lynx ftp://ftp.modssl.org/source/mod_ssl-2.8.4-1.3.20.tar.gz
$ lynx ftp://ftp.openssl.org/source/openssl-0.9.6a.tar.gz
$ lynx http://www.php.net(direct link to official download not available)
2. gzip them all:
$ gzip -d -c apache_1.3.20.tar.gz | tar xvf -
$ gzip -d -c mod_ssl-2.8.4-1.3.20.tar.gz | tar xvf -
$ gzip -d -c openssl-0.9.6a.tar.gz | tar xvf -
$ gzip -d -c php-4.0.6.tar.gz | tar xvf -
3. Configuration for SSL:
$ cd openssl-0.9.6a
$ ./config
$ make
$ cd ../mod_ssl-2.8.4-1.3.20
$ ./configure --with-apache=../apache_1.3.20 --with-ssl=../openssl-0.9.6a --prefix=/usr/local/apache
$ cd ..
The '--with-apxs' makes this into a module that can be included or excluded 
in the Apache httpd.conf file. The other '--' directives are just capabilities to
include in the PHP binary image. Run './configure --help' in the PHP source directory
for a list of all the capabilities you can include.
Note that with-mysql is on by default. So you always have MySQL support in there.
An excellent reference for available configuration options is 
http://www.php.net/manual/en/install.configure.php. The 'CFLAGS' part is needed
because the SSL inclusion enables the Apache Extended API (EAPI). This means
that EAPI must also be enabled for PHP.

4. Configuration of Apache:

The '--activate-module' compiles the ssl capability into the Apache image.
The '--enable-module=so' makes sure that mod_so is compiled in. That's the
DSO (Dynamic Server Objects) capability that allows Apache to load modules
at start-up time if a corresponding 'LoadModule' command is included in 
httpd.conf. See further below for an example dynamically includes PHP:
$ cd apache_1.3.20
$ ./configure --activate-module=src/modules/ssl/libssl.a --enable-module=so
$ make
The following SSL certificate creation only needs to be done once.
If you recompile Apache, you just have to ./configure, make, and make install.
$ make certificate
This begins the step in which you must fill in your certificate information.  
Warning: I don't really know what 
I'm doing on this step.  All I know is that it will work.
Signature Algorithm ((R)SA or (D)SA) [R]:make[1]: r

1. Country Name             (2 letter code) [XY]: US
2. State or Province Name   (full name)     [Snake Desert]: California
3. Locality Name            (eg, city)      [Snake Town]: San Francisco
4. Organization Name        (eg, company)   [Snake Oil, Ltd]: Server, Inc.
5. Organizational Unit Name (eg, section)   [Certificate Authority]: Department
6. Common Name              (eg, CA name)   [Snake Oil CA]: Server, Inc.
7. Email Address            (eg, name@FQDN) [ca@snakeoil.dom]: webmaster@domain.com
8. Certificate Validity     (days)          [365]: 365

Certificate Version (1 or 3) [3]: 1

Encrypt the private key now? [Y/n]: n

$ make install
$ cd ..
5. Configuration for PHP4:
$ cd php-4.0.6
$ CFLAGS="-DEAPI -fPIC" ./configure --with-apxs=/usr/local/apache/bin/apxs
$ make
$ make install
If you do want to re-configure and re-compile, do a 'make clean' first, and delete
file config.cache in the PHP src dir
$ cp php.ini-dist /usr/local/lib/php.ini
$ cd ..
6. Edit httpd.conf (with pico):

Your httpd.conf file is in /usr/local/apache/conf
$ pico /usr/local/apache/conf/httpd.conf
Add the following lines in the file:
LoadModule php4_module libexec/libphp4.so
Addtype application/x-httpd-php .php
Addtype application/x-httpd-php .html
Addtype application/x-httpd-php-source .phps
Since any HTML is also legal php, we suggest you add the third line listed above.
This way, you won't have to give your files a .php extension.

7. Managing HTTPD:

It's easiest not to run httpd explicitly, but to use 'apachectl' instead.  
/usr/local/apache/bin/apachectl start		(to start httpd without SSL)
/usr/local/apache/bin/apachectl startssl	(to start httpd with SSL)
/usr/local/apache/bin/apachectl restart		(to cause httpd to re-read httpd.conf)
/usr/local/apache/bin/apachectl stop		(to bring httpd down)

If you know how to put /usr/local/apache/bin/ into your path, it'll save you time.
8. Tricks:

To find out what's included in the PHP installation, and which environment
variables are available in PHP scripts, make a file that includes the line
<? phpinfo() ?>. Then load that from a browser. It'll tell you all.