Installing PHP on Apache 2
This page describes how to setup php on Apache2. PHP 4.3.0 with Apache 2.0.46 was used on Redhat 8.
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
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=-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=-O2You 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 --helpYou 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
apxsApache's tool for building modules.
configure --with-mysql --with-apxs2=/usr/local/apache2/bin/apxs
Tell apache to load the module
/usr/local/apache2/conf/httpd.conf with your text editor. Add the following to httpd.conf
Include conf.d/*.confThis 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
mkdir /usr/local/apache2/conf.d cd /usr/local/apache2/conf.dMake a file called php.conf located at
/usr/local/apache2/conf.d/php.confwith 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.phpNote 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.
Like this? Follow me ↯Tweet Follow @pfreitag
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:
- 20 ways to Secure your Apache Configuration
- ServerTokens Prod, ServerSignature Off
- Free Chapters in Apache Security
Want Security Advisories via Email?
Advisory Week is a new weekly email containing security advisories published by major software vendors (Adobe, Apple, Microsoft, etc).