You are on page 1of 14

How to Install and Configure PHP 5 to Run with Apache on Windows

Set Up PHP 5 for Apache on Windows


How to Install and Configure PHP 5 to Run with Apache on Windows
by Christopher Heng, thesitewizard.com
Many web developers want to run Apache and PHP on their own computer since it
allows them to easily test their scripts and programs before they put them "live" on the
Internet. This article gives a step by step guide on how you can install and configure
PHP5 to work together with the Apache HTTP Server on Windows. The procedure has
been tested to work on both Windows XP and Vista.
If you have not already installed Apache on your machine, check out one of the guides
listed below. This "How To" guide assumes that you have already completed installing
Apache.

If you are using Apache 1.3.x, see the guide How to Install the Apache Web
Server 1.x on Windows.
If you plan to use one of the Apache 2 or 2.2 web servers on Windows XP, see
the tutorial How to Install and Configure Apache 2 on Windowsinstead.
If you are using Apache 2.2 on Windows Vista, please read How to Install
Apache 2.2 on Windows Vista.

Note: those planning to install PHP 4 on Apache 1.x should read my article How to
Install and Configure PHP4 to Run with Apache on Windows instead.
Steps to Setting Up PHP 5
1. Download PHP 5
Before you begin, get a copy of PHP 5 from the PHP download page. In
particular, download the VC6 thread-safe zip package from the "Windows
Binaries" section that is, don't get the installer. For example, select the
package labelled "PHP 5.2.5 zip package" if 5.2.5 is the current version.
[Update: note that I have not tested the procedure below with any of the PHP 5.3
versions, only with 5.2.5, which was the latest version at the time I originally
wrote this. In theory, the procedure should work with later 5.2 versions as well.

I'm not sure about 5.3 though. A version jump from 5.2 to 5.3 usually means
bigger changes than simple bug fixes. If you want to be sure the procedure below
will work, just get the latest of the 5.2 series.]
2. Install PHP 5
Create a folder on your hard disk for PHP. I suggest "c:\php" although you can
use other names if you wish. Personally though, I prefer to avoid names with
spaces in it, like "c:\Program Files\php" to avoid potential problems with
programs that cannot handle such things. I will assume that you used c:\php in
this tutorial.
Extract all the files from the zip package into that folder. To do that simply doubleclick the zip file to open it, and drag all the files and folders to c:\php.
3. Upgraders: Remove the Old PHP.INI File from Your Windows Directory
If you are upgrading to PHP 5 from an older version, go to your windows
directory, typically c:\windows, and delete any php.ini file that you have
previously placed there.
4. Configuring PHP
Go to the c:\php folder and make a copy of the file "php.ini-recommended".
Name the new file "php.ini". That is, you should now have a file "c:\php\php.ini",
identical in content with "c:\php\php.ini-recommended".
Note: if you are using Apache 1, you should either move the php.ini file to your
windows directory, "C:\Windows" on most systems, or configure your PATH
environment variable to include "c:\php". If you don't know how to do the latter,
just move the php.ini file to the "c:\windows" folder. You do not have to do this if
you are using Apache 2, since we will include a directive later in the Apache 2
configuration file to specify the location of the php.ini file.
Use an ASCII text editor (such as Notepad, which can be found in the
Accessories folder of your Start menu) to open "php.ini". You may need to make
the following changes to the file, depending on your requirements:
a. Enable Short Open Tags
Search for the line that reads:

short_open_tag = Off
If short_open_tag is set to "off", tags like "<?" will not be recognised as the start
tag for a PHP script. In such a case, to begin a PHP script, you will need to code
your script with an opening tag like "<?php". Since many third party PHP scripts
use "<?", setting this to "Off" will give you more problems than it's worth,
particularly since most, if not all, commercial web hosts that support PHP have
no issues with your scripts using "<?" as the open tag. To fix this, change it to the
following:
short_open_tag = On
b. Magic Quotes
By default, input data is not escaped with backslashes. That is, if your visitors
enter an inverted comma (single quote) into your web form, the script will receive
that unadorned inverted comma (single quote). This is for the most part desirable
unless you special requirements. If you want your input data to have the
backslash ("\") prefix, such as, for example, to mimic your web host's settings,
search for the following:
magic_quotes_gpc = Off
and replace it with:
magic_quotes_gpc = On
Do not do this unless your web host has this setting as well. Even with the setting
of "Off", you can still use the addslashes() function in PHP to add the slashes for
the specific pieces of data that need them.
c. Register Globals
A number of older scripts assume that all data sent by a form will automatically
have a PHP variable of the same name. For example, if your form has an input
field with a name of "something", older PHP scripts assume that the PHP
processor will automatically create a variable called $something that contains the
value set in that field.
If you are running such scripts, you will need to look for the following field:
register_globals = Off

and change it to the following:


register_globals = On
WARNING: Do NOT do this unless you have third party scripts that need it.
When writing new scripts, it's best to always code with the assumption that the
register_globals item is set to "Off".
d. Display Errors
On a "live" website, you typically want errors in your script to be silently logged to
a PHP error file. On your own local machine, however, while you are testing and
debugging a PHP script, it is probably more convenient to have error messages
sent to the browser window when they appear. This way, you won't miss errors if
you forget to check the error log file.
If you want PHP to display error messages in your browser window, look for the
following:
display_errors = Off
And change it to:
display_errors = On
This value should always be set to "Off" for a "live" website.
e. Session Path
If your script uses sessions, look for the following line:
;session.save_path = "/tmp"
The session.save_path sets the folder where PHP saves its session files.
Since "/tmp" does not exist on Windows, you will need to set it to a directory that
does. One way is to create a folder called (say) "c:\tmp" (the way you created
c:\php earlier), and point this setting to that folder. If you do that, change the line
to the following:
session.save_path = "c:\tmp"
Notice that in addition to changing the path, I also removed the semi-colon (";")
prefix from the line.

Alternatively, you can find out the current TEMP folder on your computer and use
that. Or create a "tmp" folder in your PHP directory, like "c:\php\tmp" and set the
configuration file accordingly. The possibilities are endless. If you can't decide,
just create "c:\tmp" and do as I said above.
f. SMTP Server
If your script uses the mail() function, and you want the function to successfully
send mail on your local machine, look for the following section:
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
Change it to point to your SMTP server and email account. For example, if your
SMTP server is "mail.example.com" and your email address is
"youremail@example.com", change the code to:
[mail function]
SMTP = mail.example.com
smtp_port = 25
sendmail_from = youremail@example.com
Note that after you do this, when your script tries to use the mail() function, you
will need to be connected to your ISP for the function to succeed. If you do not
modify the above lines and attempt to use mail() in your script, the function will
return a fail code, and display (or log) the error (depending on how you configure
php.ini to handle errors).
(Note that in Apache 1.x, the smtp_port line may not be present. If so, don't
include it.)
How to Configure Apache for PHP 5
There are two ways to set up Apache to use PHP: the first is to configure it to load the
PHP interpreter as an Apache module. The second is to configure it to run the
interpreter as a CGI binary. I will supply information for how you can accomplish both,
but you should only implement one of these methods. Choose the module method if

your web host also installed PHP as an Apache module, and use the CGI method if they
have implemented it to run as a CGI binary.
a.

Running PHP 5 as an Apache Module

To configure Apache to load PHP as a module to parse your PHP scripts, use an ASCII
text editor to open the Apache configuration file, "httpd.conf". If you use Apache 1.x, the
file is found in "c:\Program Files\Apache Group\Apache\conf\". Apache 2.0.x users can
find it in "C:\Program Files\Apache Group\Apache2\conf\" while Apache 2.2.x users can
find it in "C:\Program Files\Apache Software Foundation\Apache2.2\conf\". Basically, it's
in the "conf" folder of wherever you installed Apache.
Search for the section of the file that has a series of "LoadModule" statements.
Statements prefixed by the hash "#" sign are regarded as having been commented out.
If you are using Apache 1.x, add the following line after all the LoadModule statements:
LoadModule php5_module "c:/php/php5apache.dll"
If you are using Apache 2.0.x, add the following line after all the LoadModule
statements:
LoadModule php5_module "c:/php/php5apache2.dll"
If you are using Apache 2.2.x, add the following line instead:
LoadModule php5_module "c:/php/php5apache2_2.dll"
Note carefully the use of the forward slash character ("/") instead of the traditional
Windows backslash ("\"). This is not a typographical error.
If you are using Apache 1.x, search for the series of "AddModule" statements, and add
the following line after all of them. You do not have to do this in any of the Apache 2
series of web servers.
AddModule mod_php5.c
Next, search for "AddType" in the file, and add the following line after the last "AddType"
statement. Do this no matter which version of Apache you are using. For Apache 2.2.x,
you can find the "AddType" lines in the <IfModule mime_module> section. Add the line
just before the closing </IfModule> for that section.

AddType application/x-httpd-php .php


If you need to support other file types, like ".phtml", simply add them to the list, like this:
AddType application/x-httpd-php .phtml
Finally, for those using one of the Apache 2 versions, you will need to indicate the
location of your PHP ini file. Add the following line to the end of your httpd.conf file.
PHPIniDir "c:/php"
Of course if you used a different directory for your PHP installation, you will need to
change "c:/php" to that path. Remember to use the forward slash ("/") here again.
If you are using Apache 1, you will have already placed your php.ini file in either the
Windows directory or somewhere in your PATH, so PHP should be able to find it by
itself. You can of course do the same if you are using Apache 2, but I find modifying the
Apache configuration file a better solution than cluttering your c:\windows directory or
your PATH variable.
b.

Running PHP 5 as a CGI Binary

If you have configured PHP 5 to run as an Apache module, skip forward to the next
section. This section is for those who want to configure PHP to run as a CGI binary.
The procedure is the same whether you are using the Apache 1.x series or one of the
2.x series.
Search for the portion of your Apache configuration file which has the ScriptAlias
section. Add the line from the box below immediately after the ScriptAlias line for "cgibin". If you use Apache 2.2.x, make sure that the line goes before the closing
</IfModule> for that <IfModule alias_module> section.
Note that if you installed PHP elsewhere, such as "c:\Program Files\php\", you should
substitute the appropriate path in place of "c:/php/" (for example, "c:/Program
Files/php/"). Observe carefully that I used forward slashes ("/") instead of the usual
Windows backslashes ("\") below. You will need to do the same.
ScriptAlias /php/ "c:/php/"
Apache needs to be configured for the PHP MIME type. Search for the "AddType"
comment block explaining its use, and add the AddType line in the box below after it.

For Apache 2.2.x, you can find the AddType lines in the <IfModule mime_module>
section. Add the following line just before the closing </IfModule> for that section.
AddType application/x-httpd-php .php
As in the case of running PHP as an Apache module, you can add whatever extensions
you want Apache to recognise as PHP scripts, such as:
AddType application/x-httpd-php .phtml
Next, you will need to tell the server to execute the PHP executable each time it
encounters a PHP script. Add the following somewhere in the file, such as after the
comment block explaining "Action". If you use Apache 2.2.x, you can simply add it
immediately after your "AddType" statement above; there's no "Action" comment block
in Apache 2.2.x.
Action application/x-httpd-php "/php/php-cgi.exe"
Note: the "/php/" portion will be recognised as a ScriptAlias, a sort of macro which will
be expanded to "c:/php/" (or "c:/Program Files/php/" if you installed PHP there) by
Apache. In other words, don't put "c:/php/php.exe" or "c:/Program Files/php/php.exe" in
that directive, put "/php/php-cgi.exe".
If you are using Apache 2.2.x, look for the following section in the httpd.conf file:
<Directory "C:/Program Files/Apache Software
Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Add the following lines immediately after the section you just found.
<Directory "C:/php">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
c.

Configuring the Default Index Page

This section applies to all users, whether you are using PHP as a module or as a CGI
binary.
If you create a file index.php, and want Apache to load it as the directory index page for
your website, you will have to add another line to the "httpd.conf" file. To do this, look for
the line in the file that begins with "DirectoryIndex" and add "index.php" to the list of files
on that line. For example, if the line used to be:
DirectoryIndex index.html
change it to:
DirectoryIndex index.php index.html
The next time you access your web server with just a directory name, like "localhost" or
"localhost/directory/", Apache will send whatever your index.php script outputs, or if
index.php is not available, the contents of index.html.
Restart the Apache Web Server
Restart your Apache server. This is needed because Apache needs to read the new
configuration directives for PHP that you have placed into the httpd.conf file. The
Apache 2.2 server can be restarted by doubleclicking the Apache Service Monitor
system tray icon, and when the window appears, clicking the "Restart" button.
Testing Your PHP Installation
Create a PHP file with the following line:
<?php phpinfo(); ?>
Save the file as "test.php" or any other name that you fancy, but with the ".php"
extension, into your Apache htdocs directory. If you are using Notepad, remember to
save as "test.php" with the quotes, or the software will add a ".txt" extension behind your
back.
Open your browser and access the file by typing "localhost/test.php" into your browser's
address bar. Do not open the file directly on the hard disk - you'll only see the words you
typed in earlier. You need to use the above URL so that the browser will try to access
your Apache web server, which in turn runs PHP to interpret your script.

If all goes well, you should see a pageful of information about your PHP setup.
Congratulations - you have successfully installed PHP and configured Apache to work
with it. You can upload this same file, test.php, to your web host and run it there to see
how your web host has set up his PHP, so that you can mimic it on your own machine.
If for some reason it does not work, check to see whether your PHP setup or your
Apache setup is causing the problem. To do this, open a Command Prompt window
(found in the "Accessories" folder of your "Start" menu) and run php-cgi.exe on test.php
with a command line like "c:\php\php-cgi test.php" (without the quotes).
If invoking PHP from the command line causes a large HTML file with all the PHP
configuration information to be displayed, then your PHP set up is fine. The problem
probably lies with your Apache configuration. Make sure that you have restarted the
Apache server after making configuration changes. Verify that you have configured
Apache correctly by looking over, again, the instructions on this page and the steps
given in How to Install and Configure Apache 1.x for Windows (for Apache 1.x users)
or How to Install and Configure Apache 2 on Windows (for Apache 2.x users).
Learning PHP
The complete PHP reference manual can be obtained from the php website. You can
refer to it online or download the entire set of HTML files for reference offline. As its
name implies, it is a reference manual only. For tutorials, check out the PHP tutorials at
thesitewizard.com. If you are new to writing PHP scripts, the following chapters may
interest you:

Writing Your First PHP Script gets you on your feet quickly with writing a useful
and functional PHP script.
Form Validation, Disabling Browser Caching, Embedding HTML Code in
PHP introduces more features of PHP in a practical, usable way.
How to Prevent Email Injection in Your PHP Form-to-Mail Scripts deals with how
to avoid a security hole in PHP scripts that use the mail() function.

Have fun!
Copyright 2007-2009 by Christopher Heng. All rights reserved.
Get more free tips and articles like this, on web design, promotion, revenue and
scripting, from http://www.thesitewizard.com/.
You are here: Top > Free PHP Tutorials: PHP Programming, PHP Installation and
Configuration > How to Install and Configure PHP 5 to Run with Apache on Windows

Other articles on: Apache, PHP, Perl


thesitewizard News Feed (RSS Site Feed)
Do you find this article useful? You can learn of new articles and scripts that are
published on thesitewizard.com by subscribing to the RSS feed. Simply point your RSS
feed reader or a browser that supports RSS feeds
at http://www.thesitewizard.com/thesitewizard.xml. You can read more about how to
subscribe to RSS site feeds from my RSS FAQ.
Please Do Not Reprint This Article
This article is copyrighted. Please do not reproduce this article in whole or part, in any
form, without obtaining my written permission.
Related Pages

How to Use Different CSS Style Sheets For Different Browsers (and How to Hide
CSS Code from Older Browsers)
How to Accept Credit Cards Payments on Your Website

How to Improve Your Search Engine Ranking on Google

Which Web Host Do You Recommend? (FAQ)

How to Register Your Own Domain Name

Free Customized Feedback Form (PHP / Perl Script) (Wizard)

Dreamweaver Tutorial: How to Create a Website with Dreamweaver CS3

How to Make Your WordPress Blog Search-Engine-Friendly

New Pages

NetObjects Fusion 11 Tutorial: How to Create a Website with NetObjects Fusion


11
How to Switch Between the Liquid and Fixed Layout Templates in Dreamweaver

Should You Get a Domain Name with Spaces or Dots In Between to Improve
Readability?

How to Centre a Background Image or Photo on Your Web Page Using


KompoZer

How to Rescue Your Website from the Clutches of a Bad Web Designer or Bad
Web Host

How to Created Rounded Corners for Your Box Borders in CSS

How to Add a Feedback Form to Your Website with Dreamweaver CS5

What is MySQL? What is a Database? What is SQL?

Should You Choose a Linux or a Windows Web Hosting Package? Is There Such
a Thing as a Mac Web Host?

How to Point a Domain Name to Your Website (Or What to Do After Buying Your
Domain Name)

Popular Pages

How to Make / Create Your Own Website: The Beginner's A-Z Guide
Tips on Choosing a Good Domain Name

How to Create a Search Engine Friendly Website

Dreamweaver CS5 Tutorial: How to Design a Website with Dreamweaver CS5

How to Design and Publish Your Website with KompoZer (free WYSIWYG web
editor)

Free Customized Feedback Form Wizard (PHP / Perl Script)

How to Link to This Page


To link to this page from your website, simply cut and paste the following code to your
web page.

It will appear on your page as:


How to Install and Configure PHP 5 to Run with Apache on Windows

Copyright 2007-2010 by Christopher Heng. All rights reserved.


thesitewizard, thefreecountry and HowToHaven are trademarks of Christopher
Heng.
Last updated: 23 February 2010.
Search This Site
Search

Home
Donate
Contact Us
Link to Us
Topics
Site Map
Getting Started
Web Design
Search Engines
Revenue Making
Domains
Web Hosting
Blogging
JavaScripts
PHP
Perl / CGI
HTML
CSS
.htaccess / Apache
Newsletters
General
Seasonal
Reviews
FAQs
Wizards

Find this site useful?


Please link to us.