Pete Freitag Pete Freitag

Installing PHP on Apache 2

Updated on June 03, 2021
By Pete Freitag
linuxmisc

This page describes how to setup php on Apache2. PHP 4.3.0 with Apache 2.0.46 was used on Redhat 8.

Install Apache

Follow these instructions to Install Apache2 from source.

Download the latest PHP sources

Download the PHP tar.gz from php.net

Extract the source code

Extract the source code to a directory under /usr/local/src

cp php-4.3.0.tar.gz /usr/local/src
cd /usr/local/src
gunzip php-4.3.0.tar.gz
tar -xvf php-4.3.0.tar
rm -f php-4.3.0.tar
cd php-4.3.0

Set compiler options (optional)

If you want you can set some compiler options, this is typically done to create optimized code. One very common thing to do is to set CFLAGS=-O2 or CFLAGS=-O3 (that's an Oh, not a Zero) that tells the compiler how much code optimization to do, setting it to a higher value does more optimization, but also takes longer to compile and may potentially cause unexpected things (not common). O2 is a fairly safe level to use. To do this type the following:

export CFLAGS=-O2
You can also tell the compiler what kind of CPU you have to perform more optimizations, I'm not going to get into that here, but if your interested check out the GCC manual.

Configure php with autoconf

Now you need to set the configuration options, and check that all libraries needed to compile are present. This is done with a script called configure, to find out what options you can set type the following:

./configure --help
You will see there are quite a few configuration options, look in the docs for a page on the configure options. We will tell configure to enable mysql, and also tell it where to find apxs Apache's tool for building modules.
configure --with-mysql --with-apxs2=/usr/local/apache2/bin/apxs

Compile PHP

make

Install PHP

make install

Tell apache to load the module Edit httpd.conf /usr/local/apache2/conf/httpd.conf with your text editor. Add the following to httpd.conf

Include conf.d/*.conf
This allows you to create a specific configuration file for each module that you install, for instance php.conf Now create a directory in your apache directory if its not there called conf.d
mkdir /usr/local/apache2/conf.d
cd /usr/local/apache2/conf.d
Make a file called php.conf located at /usr/local/apache2/conf.d/php.conf with the contents:
# PHP Configuration for Apache
#
# Load the apache module
#
LoadModule php4_module modules/libphp4.so
#
# Cause the PHP interpreter handle files with a .php extension.
#
<Files *.php>
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 9524288
</Files>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
Note you could have just inserted the above in your httpd.conf file, and omit the conf.d step if you desire. I feel that the conf.d approach is a cleaner way to do it.

That's it, restart apache and you should have PHP working.

Staying up to date

When installing software from source it is important to keep up with security patches. There are many ways to stay up to date, I've built a handy service called stack.watch which you can use to follow php security patches, Laravel security updates, or Apache httpd web server security vulnerabilities.

Note: To install PostgreSQL support on redhat 9 with php/apache2 you will need to install the postgresql libs, and devel rpms, and add --with-pgsql to your configure line

Thanks, Jonathan Crowe for suggesting the AddType directive.



apache php servers configuration

Installing PHP on Apache 2 was first published on December 01, 2002.

If you like reading about apache, php, servers, or configuration then you might also like:

Weekly Security Advisories Email

Advisory Week is a new weekly email containing security advisories published by major software vendors (Adobe, Apple, Microsoft, etc).

Comments

Thanks, it worked.
by Barry on 02/28/2006 at 1:55:13 AM UTC
Worked for me also thanks
But configuring php with mysql was problamatic as mysql header files were not present on my linux box

so i did following
ยท To connect with mysql install mysql header files

> Download MySQL-devel-standard-5.0.22-0.rhel3.i386.rpm from http://dev.mysql.com/downloads/mysql/5.0.html
(http://dev.mysql.com/get/Downloads/MySQL-5.0/MySQL-devel-standard-5.0.22-0.rhel3.i386.rpm/from/http://mirror.switch.ch/ftp/mirror/mysql/)

> Change directory to the directory containing MySQL-devel-standard-5.0.22-0.rhel3.i386.rpm
> rpm ?ivh MySQL-devel-standard-5.0.22-0.rhel3.i386.rpm
by phoneynk on 06/02/2006 at 12:11:31 AM UTC
how to configure. apache and php ?
the apache tell error for no service installer then Apache"
by sivakumar on 06/06/2006 at 6:25:42 AM UTC
The Application has failed to start because OCI.dll was not found.Re-installing the application may fix this problem.
by GowthamiP on 03/25/2007 at 10:23:54 PM UTC
when i install php
everything go well until this step

# make

the messgae appeared:
make: *** No targets specified and no makefile found. Stop.
by Manee on 11/23/2007 at 12:33:49 PM UTC
Thanks buddy

It really works.

This issue had wasted my 3 days.


Again thanks
by Vickey Rihal on 07/03/2009 at 4:46:25 AM UTC
the link to the apache installation does not work.

Also I am getting an error about libxml2 when attempting to ./configure php
by john smith on 10/04/2010 at 11:07:40 AM UTC
Hi,

Thanks it really helped. Just want to comment that using "export CFLAGS=-O2" teh configure was giving error while checking for C-compiler. if we don't export CFLAGS it worked fine.
by Abhay Raghuwanshi on 07/14/2011 at 9:01:11 AM UTC
Yes! It Works!! Thank you very much!!
by Fox on 08/19/2011 at 9:23:55 AM UTC