This tutorial is also suitable for setting up your local WordPress server. Testing many things (CMSes, themes etc.) on the internet for me and many others is sometimes a big pain and it has many disadvantages.

You need to buy a domain, pay for hosting, use your internet providers slow upload speeds to upload a files over ftp, and whenever you want to change some configuration of Apache or PHP you have to contact your hosting provider and wait some time until they respond. I could continue with other disadvantages, but I think you get the picture.

There are many all in one packages, which will install all together like WAMP or XAMPP, but I do not like them. In my opinion, they make a lot of uncontrolled rubbish on the computer and they are not often up to date. But they are good as a very fast solution for people who do not want to learn how it all works and they only need the fastest way to install local web server, to test their projects.

This tutorial is more complicated than a WAMP or XAMPP solution but the biggest advantage is that you have all over your control – because you configure all by yourself. And you can be always up to date and enjoy the latest fixes and improvements in Apache, PHP and MySQL packages.

As soon as you master this tutorial, you will agree that a local server can be installed using original packages in a few minutes, like the WAMP or XAMPP. Updating with new packages is also really simple. Just install the new package over the existing one and that is it.

Who Should Read This Local Web Server Setup Tutorial?

This tutorial is great for web developers and web designers who need real-time testing of web-based applications or themes for WordPress, Joomla, Drupal without need of an internet connection or web hosting.

It will also cover and make you aware of all the most important mistakes and unexpected errors which sometimes happen that other tutorials often do not cover. So users who will follow this tutorial step by step, should have a working localhost web server without any unexpected errors by the end.

I decided to write this tutorial because I followed many tutorials on the web, but I was not able to get my servers to work on the first try, so I spent many hours of searching and fixing unexpected errors, which are all covered in this tutorial.

Quotes in Tutorial

I often use quotes to put syntax, commands, login names, passwords, paths, and the names of the folders between them.

So whenever you see quotes in the tutorial, always use only what is between the quotes. It will be marked as bold text too. Sometimes there are quotes between quotes, these quotes (between quotes) are important to use in configuration files.


This tutorial was made on 32bit Windows 7 Ultimate in VMware Player, but I am using it on a real installation of 64bit Windows 7 Ultimate without any problem. I have also used it on a 64bit version of Windows Vista Ultimate before.

So in that case it should work on any Microsoft operating system. Even if the packages are 32bit they do work on 64bit operating systems without any incompatibility issues. There are unofficial 64bit packages for Apache and PHP, but their installation is much more complicated and they are not often updated. Only official support for 64bit operating systems has MySQL, but it would not work properly with 32bit Apache and PHP.


If you find any new versions of these packages, you can use them too, the steps will be the same.

Pre-installation Steps

1. For better orientation I often create a specific folder structure for installation and for the folder where my test web pages are stored. I recommend you to follow the same structure; otherwise you will have to change all paths to your own settings during the tutorial steps.

The first directory I create is called “dev” (from the word development) in the root of “C:\“. The second directory I create is called “progs” in “C:\dev\” and the third is called “www” in “C:\dev\” So after that you should have three new directories.

  • C:\dev\
  • C:\dev\progs\ – for the installation of Apache, PHP and MySQL
  • C:\dev\www\ – this folder is like the ftp folder on your hosting, so you will extract all your webpages here

2. Users of Windows XP can skip this step! It is for Vista, Windows 7 and 10 users! Disable UAC! You will do it by clicking on Start>Control Panel>User Accounts and then click on “Change User Account Control settings”.

On the next window (remembering the default position of the slider) pull the slider down to “Never notify me when:…”, click on OK and close the windows. Vista users – just turn off User Account Control.

Do not restart the computer now! For security reasons the slider should be reverted to default settings after successful installation of Apache, PHP and MySQL.

3. Modify the Windows hosts file. In some cases I could not get the installation work until I did this step. I did not test this on Windows XP, so XP users can also probably skip this step, because in my opinion it is not needed.

This file called hosts is often placed in “C:\Windows\System32\drivers\etc\“, it is hidden and it is read only. To see hidden files go to Start>Control Panel>Folder Options, click on tab “View”, select “Show hidden files, folders, and drives” and then click OK.

On x64 systems it will not be visible in 3rd party 32bit file managers like Total Commander even if you set settings to see hidden files and folders, because 32bit programs can not see 64bit files and folders.

So navigate to this directory through Windows native file Explorer to get to the hosts file properly. Open the file in notepad, search for the line: “# localhost“, delete the “#” symbol, save the file and now you can restart the computer to apply both settings.

Now we are done with pre-installation Steps.

Apache installation and configuration

Run the installation of Apache, click next, check that you accept the terms, click next and next again. On the next screen fill in the Server settings, like on the picture below, and click next again.

On the next page select Custom Setup Type and click next. All features leave as they are, change only the installation path to “C:\dev\progs\Apache\” and click Next.

Now click install. After the installation you should see new icon on the windows taskbar with a small green triangle which signalizes that Apache is installed and running.

To test it properly open Internet Explorer, Firefox or whatever browser you are using and type “localhost” into your address bar. If everything went well you should see “It works!

Now we need to edit the Apache configuration file! Go to the folder “C:\dev\progs\Apache\conf\” and open the file “httpd.conf” in Notepad.

For better, more comfortable editing, I recommend advanced text editor like Adobe Dreamweaver or free PSPad, because you can see line numbers and navigation through the text file will be more comfortable.

  1. Go to line 117 or search for “#LoadModule rewrite_module modules/” and delete the “#” at the start of the line – in other words uncomment the line (good for nice URLs)
  2. Go to line 178 or search for “DocumentRoot “C:/dev/progs/Apache/htdocs”” and replace it with “DocumentRoot “C:/dev/www”
  3. Go to line 205 or search for “<Directory “C:/dev/progs/Apache/htdocs”>” and replace it with “<Directory “C:/dev/www”>“
  4. Go to line 208 or search for “Options Indexes FollowSymLinks” and replace it with “Options Includes Indexes FollowSymLinks MultiViews
  5. Go to line 225 or search for “AllowOverride None” and replace it with “AllowOverride All
  6. Go to line 240 or search for “DirectoryIndex index.html” and replace it with “DirectoryIndex index.html index.htm index.php
  7. Go to line 382 or search for “AddType application/x-gzip .gz .tgz” do not replace anything, just add new line below this line with text “AddType application/x-httpd-php .php

That is it, save the file, exit the editor and restart Apache. You can do it by clicking on the taskbar Apache icon and then move the cursor on the Apache 2.2 and click restart.

At this state if you point your browser again to “localhost” you won’t see “It works!” but just something like “Index Of”. Do not worry, it is due to changing the directory from where Apache translates the web pages. Apache installation and configuration is now completed!

PHP Installation and Configuration

Run the downloaded PHP install package. Click Next, accept the terms and click Next again. On the next screen click Browse and navigate the installation program to install PHP to “C:\dev\progs\PHP\” and click Next.

Now select Apache 2.2.x Module and click Next again. At this step you need to tell the installation program where the Apache configuration file (we have edited in apache configuration) is.

So navigate the installation by clicking on the button Browse to the directory “C:\dev\progs\Apache\conf\” and click Next. On the next screen click Next again and then on the Install.

If all went well you should see following new lines at the end of Apache configuration file “httpd.conf“:

PHPIniDir "C:/dev/progs/PHP/"
LoadModule php5_module "C:/dev/progs/PHP/php5apache2_2.dll"

Now we need to configure the PHP configuration file “php.ini” which is in the folder “C:\dev\progs\PHP\“, so open it in Notepad, PSPad or Dreamweaver and change the lines like this (the PHP should also work with the original php.ini, but these changes are recommended for more comfortable using):

  1. Go to line 458 or search for “memory_limit = 128M” and change it to “memory_limit = 512M” (define how much memory can PHP use)
  2. Go to line 531 or search for “display_errors = Off” and change it to “display_errors = On” (if there are some errors it will be shown in web browser, if this settings are set to on)
  3. Go to line 542 or search for “display_startup_errors = Off” and change it to “display_startup_errors = On
  4. Go to line 728 or search for “post_max_size = 8M” and change it to “post_max_size = 100M
  5. Go to line 879 or search for “upload_max_filesize = 2M” and change it to “upload_max_filesize = 2000M
  6. Go to line 959 or search for “;date.timezone =” and replace it with “date.timezone = “XXX/XXX”“. Where the XXX/XXX means your actual position, for me it is Europe/Prague, to find your position look here. For example for people living in Brazil – Sao Paulo, it should look like this “date.timezone = “America/Sao_Paulo”

That’s it. Save the file, exit editor and restart Apache. Now we need to test if the PHP works. So navigate to directory “C:\dev\www\” and create a new text file called “index.php” and put this”<?php phpinfo(); ?>” as a text inside, save the file and exit.

Open your web browser and point it to “localhost“. If PHP is successfully installed you should see the same like on the following picture.

MySQL Installation and Configuration

This is the easiest part, because all is configured in the installation wizard. Just run the MySQL installation file. Click next, choose Custom and then click Next, change the installation directory to “C:\dev\progs\MySQL\“, click Next once more and then Install.

After the installation completes you will see another screen, so once again click, Next, Next, check “Configure the MySQL server now” and uncheck “Register the MySQL server now“, then click Finish.

On the next screen click Next, then select “Detailed Configuration” and click Next, select “Developer Machine” and click Next, select “Multifunctional Database” and click Next, other screen leave as is and click Next, select “Decision Support (DSS)/OLAP” and click Next.

Now check “Enable TCP/IP Networking“, leave port number 3306, check “Add firewall exception for this port“, check “Enable Strict Mode” then click Next.

Select “Best Choice For Multilingualism” and click Next. Check “Install As Windows Service“, select service name “MySQL5“, check “Launch the MySQL Server automatically” and check “Include Bin Directory in Windows PATH” then click Next.

Check “Modify Security Settings” and as a “New root password” use “root” without the quotes, confirm password, other things leave as they are and click Next. Last step is to apply all settings we have done, so click on Execute and wait until you see this:

If you do not see this picture there is something wrong. And it should be many things. I will try to help in comments. But I expect there will not be any problems.

phpMyAdmin installation and configuration

phpMyAdmin is web-based MySQL database manager. For me personally it is the best and easiest solution for managing and creating databases even if it runs on localhost.

There is a solution from MySQL developers called MySQL GUI Tools, which runs on Windows operating systems, but it is not providing the easiest survey and it is a bit chaotic for me. Also many users using web hosting services for their web pages knows phpMyAdmin very well.

I often install WordPress, Drupal, Joomla and vBulletin together to test themes etc. and I use a single database for each CMS so that is why I use phpMyAdmin, which allows me to create databases in a friendly way without knowledge of the MySQL command line.

We will start with creating a directory called “pma” in “C:\dev\www\“. Now open the zip file with phpMyAdmin and extract all content of the directory “phpMyAdmin-3.3.2-all-languages” to “pma” directory.

Now open your favourite web browser and point it to “localhost/pma” if you are lucky, you should see the phpMyAdmin login screen. You can login to phpMyAdmin by entering “root” as the login name and password.

Sometimes on Vista and Windows 7, maybe on XPs operating systems too, you will get some kind of error saying that PHP is not installed or configured properly. This is one of the very often unexpected errors which I was searching for a solution for many hours, before I solved it!

The solution could be simple – first is go to the directory “C:\dev\progs\PHP\“, find a file called “php5ts.dll” and copy it to “C:\Windows\” and “C:\Windows\System32\” directories and restart Apache. Maybe Apache will refuse to start and it will show errors, if so, ignore the error and start again. It should work now! :)

After this fix you should see the phpMyAdmin login page by pointing your browser to “localhost/pma“. If the first solution did not help the problem has a lot to do with Windows write folder permissions and PHPs session save path and Temp directories.

PHP has no rights to write to desired Temp directories. This problem is really individual and if someone will report it in the comments I will help him/her individually.

So login to phpMyAdmin and you will get to the phpMyAdmin database administration interface. On the left panel, you will see actual databases, which is important to run MySQL properly, so do not delete them at any time.

On the right side you will see some information about your web server, you can change a theme or language or create a new database. On the bottom you will see some errors, which we are going to fix. For basic use it is not necessary, but I can’t stand something showing errors :-)

First we must create some tables to unlock phpMyAdmin’s full potential, so at the left panel click on the database called “test” and then click on “Import“.

After that, click on the Browse button and navigate phpMyAdmin to the folder “C:\dev\www\pma\scripts\” and select a file called “create_tables.sql” and in phpMyAdmin in the right bottom corner click on “Go“. It will create a new database called phpmyadmin with 9 tables.

It will be used for phpMyAdmin advanced features, like creating PDFs etc. You can close the browser and look forward to the last part – editing phpMyAdmin configuration file :-). So go to the folder “C:\dev\www\pma\” and open file “” in Notepad, Dreamweaver or PSPad.

  1. We need to edit line 18 defining the blowfish secret passphrase. It is completely up to you what you enter between the quotes so it can look for an example like this “$cfg[‘blowfish_secret’] = ‘ 1M41Oie6q9E3w#7U0M^3f3Tyzr5r93 ‘;
  2. Go to line 36 and replace “$cfg[‘Servers’][$i][‘extension’] = ‘mysql’;” with “$cfg[‘Servers’][$i][‘extension’] = ‘mysqli’;”
  3. Now we need to delete “//” at the start of the following lines:
(also change default pma user to root)
$cfg['Servers'][$i]['controlpass'] = 'root';<strong> (also change default pmapass password to root)</strong>
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';

Save the file in the same folder as “” and exit the editor. phpMyAdmin should now work without any errors and we are done with the whole installation of the localhost web server. Now you can restore your UAC settings as we were talking about at the beginning.

Optional – installing CMS (WordPress 2.9.2)

First we must create a new database for WordPress, so login to phpMyAdmin and under the text “Create New Database” fill the name “WordPress” and click on Create.

Now go to the folder “C:\dev\www\” and create a new folder called “wp“. If you have downloaded the WordPress 2.9.2 installation open the zip file and extract all content of the WordPress directory to “C:\dev\www\wp\“.

Open your browser and point it to “localhost/wp“, If all was done well, you should see first the WordPress installation page, so click on “Create a Configuration File” and then on “Lets go!” On the next page.

On the following page fill in the database name, which is “WordPress” and User Name and Password which is “root” for both. This is the password for WordPress to write tables in the database not for accessing the CMS admin panel.

All other values can stay as they are, click “Submit” and then “Run the Install“. Fill in the Blog title, as you wish and in the email field, enter any true email address. Sending emails will not work because our Apache is not configured for sending emails, but who cares?

We do not need it on a localhost! ;-) Then continue with the install. On the next screen you’ll see your login and password, write it down somewhere, and click on “Log In” to get to the WordPress admin interface. Here you can change the password to something easier to remember.

You are done. If you point your browser now to “localhost/wp” you will see something like this:

Now you know the basics of how to install any other CMS you prefer. Installations of Drupal or Joomla are very similar.


I told you that it is not so complicated ;-) If you are like me, you like a good coffee in your favourite café (which unfortunately has no internet connection). And if you like to work in the company of people and not be alone at home or in an office, you will probably appreciate this tutorial.

Most of you are most likely using WAMP or XAMPP solutions, some of you are using my solution in a more advanced way, which Apache configurations offer, but I know many web designers and web developers who do not know about these solutions and this tutorial is exactly for them.

If you are facing any problem let me know and I will try my best to help you.

Editorial Team

Written by Editorial Team

  • Gaurav Sharma

    I was trying to follow this tutorial as I wanted to have end to end control over my website. But, then I didn’t get same versions of PHPmyadmin and MySql as mentioned in this blog. Because of this, I got some parse errors in PHPMyAdmin. When I somehow got rid of parsing errors, it gave me message that I should use PHP 5.5+ versions. From here, more trouble started. I looked for latest msi installers for windows for Apache 2.4 and PHP 5.6, and could found none. Could you please guide me how to setup Apache 2.4 and PHP 5.6 versions. I will really appreciate your help. I learned lot from your this tutorial.

  • Giancarlo Forero

    Could you do a tutorial on how to use XAMPP to setup a local web server? I found this one interesting and I’m sure you’d do a great job with that one! :)

  • roz


    To get rid of the msql extension is missing, I deleted the file of and didn’t follow that instruction and that removed the error. I was able to log on.

    I hope this information helps.

  • chandu

    sir ,i am unable to start service with mysql server .i am geting not respondind during mysql-5 installation.Please help me

  • carlos

    Finally a step by step setup that actually works! thank you for this!

  • Daniel Lucas

    I followed this tutorial a while ago without any problems but this time I had the same problem as a lot of the recent comments (mysqli extension not found).
    My problem was that the newest versions of PHP are VC9. When following this make sure to get an older VC6 copy of PHP.

  • Gleb Rodin

    Great tutorial. Only here I found what I looking for a very long time. All works great !!! Thanks a lot.

  • Harish

    Great step by step walkthrough.

    Got everything done, but stuck at pma. I get the same error many have been voicing here, but without a valid solution
    The mysqli extension is missing. Please check your PHP configuration.

    Can you help?


  • ralf

    sorry, but your info is so outdated, the links you provide are obsolete, the refs you give aren’t available anymore. And the packages one can get at the download destinations will not work the way you describe.
    I spent 7 hours on trying to make this work, but there is no way.
    Please update your post with up – to – date links and verify that your method is still valuable and functional.
    A deceived reader

    • Rean John Uehara

      Sorry about that, the article was published almost 2 years ago. You can check the date. :)

  • Faith

    I just used your instructions, thanks for how clear they were. However when I am installing MYSQL I get the following error:

    Could not start the service MYSQL5: Error:0

    Any ideas?

    • Faith

      Actually now I get.. Cannot Create Windows Service for MySQL5: Error: 0

  • Dorhero

    Awesome! I tried several “packages” that were supposed to simplify this but something was always broken. Followed your instructions step by step and everything runs perfectly first time! Thanks for your excellence!

  • khuze

    I just followed all your instructions and i was there in close to half an hour. Really grateful for this step by step explanation.

  • Deepak

    i tried your solution for pma folder after that i got this message

    phpMyAdmin – Error

    The mysqli extension is missing. Please check your PHP configuration.

    what should i do?

  • Josh Brown

    Hi there.

    For all those who are getting the error “The mysqli extension is missing. Please check your PHP configuration.” Go into the PHP.ini file (default: C:\dev\progs\PHP) and search for “mysqli.default_host =”. Replace that with “mysqli.default_host = localhost” without the quotes. PHPMyadmin should now work when going to the URL “localhost/pma”.



    • Sam

      I did exactly what you told me to do, but I still getting the “The mysqli extension is missing. Please check your PHP configuration” error…

      Can anyone help me out?
      Thanks for the efford!

  • tudor

    I have followed all the steps, installed Apache and PHP, but when I go to http://localhost/ I only see this line: “” – which is the content of the index.php file in C:\dev\www

    What went wrong?

  • Annie

    hi. i have followed the instructions for the apache installation and I am getting an error on restarting saying “syntax error on line 189. directive requires additional arguments. Could you please help me on this?

  • Alex

    Hello !

    After confirguration, when I into to http://localhost and I click to pma, downloaded automated download.gz. Why ?

  • Sanjay

    hello sir,

    i installed Apache properly, but when i installed PHP it does not shown phpinfo() page when i click localhost on browser(http://localhost/). it just shown It works! what should i do.

    I am currently using windows xp.

    Please help


    • Rean John Uehara

      Google XAMPP and install it on your computer. Then everything should be fine!

      • Sanjay

        hi sir,
        i completed installation of Apache, php, Mysql successfully.
        Now the problem occur after phpMyAdmin. It shows like this in browser

        You don’t have permission to access /pma/ on this server.”
        Now what i have to do please suggest me.
        ( am not installing XAMPP)

        Thanks & Regards

        Sanjay Kumar

    • Gary

      I just went through this process. I found I just had to clear my browser’s cache to fix this particular problem.

  • omkar

    I tried to install phpmyadmin as per the instruction mentioned by your in the link

    I successfully installed apache, mysql, php but i got stuck at phpmyadmin. I get following error after installting phpmyadmin. when i type http://localhost/pma in brower i get following error message.

    The mysqli extension is missing. Please check your PHP configuration.

    I am currently using windows xp.

    • Gary

      I had the same problem. You need to add C:\web\progs\MySQL\lib to your PATH and restart. Then clear your browser cache and try logging in again.

      • Jo

        what PATH are you talking about?

  • Craig

    Great guide.
    Got me the furhest so far in getting this up and running on Windows XP.
    However, no go on PHP admin.
    Getting error:
    The mysqli extension is missing. Please check your PHP configuration.

    Checked everything in PHP.INI as per documentation and some other forums, but can’t find why I have this error.

  • Alex

    Very good job!thanks works fine for me

  • George Guindi

    More than excellent job, the above explanation I feel that I have a teacher at the board explaining step by step.

    George Guindi

  • john

    Your PHP MySQL library version 5.0.51a differs from your MySQL server version 5.5.17. This may cause unpredictable behavior.

    can anyone help me for this?

  • Cumhur

    Hello there,
    I must admit that this is the easiest tutorial I’ve ever come up to. Thanks. I have installed MySQL with your instructions and it went well. Nevertheless I need to create a file on “http://localhost/admin/msgapi.asp”.
    Could you please help me how am I suppose to do that. Because for the time being all I can see is MySQL program under the start/programs menu and there is only a “Comment Line Client” link.
    Where is that MySQL now (sorry for my illiterate question) and how can I create a file as I mentioned above please?
    Thanks for your support.
    All the best

  • francis


    I have this problem at the last part of MySQL installation. When I clicked the Execute I turns the setup window to “Not Responding.” I think there’s something to do with the settings or what? Can anyone help me in this last step. Thank you!

    • Rean John Uehara

      In my experience it might mean the problem is with the computer you are using. There might be incompatible programs and the likes. Sometimes rebooting helps, or maybe uninstalling some un-needed applications.

  • Kevin

    I am having trouble with phpadmin. I tried the first solution of copying the dll file you mentioned. This did not work.

  • Stan

    I am getting an error..please help.I have extracted phpadmin on the folder pma but this happens when I open the localhost on the browser.
    phpMyAdmin – Error

    The mysqli extension is missing. Please check your PHP configuration.

    • Sean D

      same thing I got – go back to your php download run again, select change, select your apache service version, confirm your directory. When the screen comes up with all the options for download expand the extensions + sign and find the mysqli extension and select it. you should also select all of the mysql extensions as well(needed for myphp). You will also need to update the last couple lines of your apache config with the correct paths again.

      • Paul

        I ran into the exact same problem. I read, and did, your solution and all is well. Thanks bunches.. Now to complete the setup.

  • Joe

    Hi, first of call great article helped me heaps.

    second I’m getting a couple of errors. One when I created the PHP file to view PHP information. All I got from Local Host was ‘It Works!’

    Second I installed phpMyAdmin and followed everything step by step but I still get the errors
    The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. To find out why click here.


    The configuration file now needs a secret passphrase (blowfish_secret).

    Help me please :-)

  • Sean D


    Great step by step – only a few hiccups using Apache 2.2.19 & PHP 5.2.17 … needed to go back along the way and add in some extensions for the PHP like mySQLi, mySQL(a couple of them) etc. and each time I did I had to reediit the Apache config in the last couple lines to add the paths to the PHP ini dir and dll. This is the first time I’m running a server on my XP box – mostly to test out scripts before going live with them – so I have one question.
    Should I be able to just copy my html and php files into the www directory and they will work? Or do I have to do something in the code of the php files to tell it how to find php – because for the test form I copied the html form worked but the php response page just shows the code, not the echo output(therefore it is not being compiled by the PHP)??? I’m sure it’s something simple I’m missing – please help.

  • Anto

    Dear Tomas Varil,

    In Mysql server Instance Configuration .. start service is getting failiure ..
    is i wrong in anywhere ??
    Please suggest me ..

  • Tom

    Hi Thomas,

    After configuring the httpd file for the Apache installation, I get the error below when going to the http://localhost/. Before changing the file I got the “It works!” message.
    Do you know what the problem may be? Thanks!

    You don’t have permission to access / on this server.

    • Robin Anderson

      I have also run into the 403 Forbidden error when trying to access localhost. I am on Windows 7. This happened after I installed php. Is the problem with my httpd . config file? I have check it over many times to make sure it matches exactly with your instructions.

      • Robin Anderson

        Nevermind: i repaired my Apache via the downloaded file (first I rewrote the httpd.conf to httpd.conf.old to hid it), instead of restarting, I stopped the server, then started again. Then I renamed my httpd.conf file back. Now it works again…yeah

  • Tomas Varil

    Hello Mohan, these errors have a lot to do with PHP windows libraries. Which installation of PHP did you used on which platform? I recommend to use latest PHP 5.3.4. Did you try to restart a computer. This often happen if computer is not restarted after PHP installation. Windows cannot find important libraries for cURL and others, because system Path to PHP installation directory is not loaded. What happen if you try to stop loading these extensions by commenting their lines at the end of php.ini?

  • Mohan RajKumar

    PHP Startup: Unable to load dynamic library ‘C:devprogsPHPextphp_curl.dll” – The specified module could not be found.
    PHP Startup: Unable to load dynamic library ‘C:devprogsPHPextphp_openssl.dll” – The specified module could not be found.
    PHP Startup: Unable to load dynamic library ‘C:devprogsPHPextphp_pgsql.dll” – The specified module could not be found.

    These are the errors that I am getting while re-starting the apache server ( after editing and saving of the file ” php.ini ” ). Could you please provide me a solution ?

  • Jonathan

    Thank you so much, you saved my day!

  • Vernon

    FWIW to Win 7 users – I made a separate temp folder for this setup to play in:


    and then updated the php.ini file like so:


    I set the permissions of this folder to be promiscuous for all users.

    This solves the WSOD when attempting to log into phpMyAdmin without messing with the integrity of the Windows Temp folder (which might make you attackable).

    Thanks for the awesome tutorial, it taught me a lot more than a WAMP installer would have!

  • Rick


    Many thanks for this tutorial i have been able to follow everything up to the point of installing phpMyAdmin. I keep getting the error meassage “Cannot load mysql extension. Please check your PHP configuration. – Documentation”when accessing localhost/pma. I tried copying “php5ts.dll” to windows and system32 but that didn’t work. I did some googling and tried copying “libmySQL.dll” to the system32 and windows folders but still no joy. I have restarted apache after every change.

    Please could you help me solve this so i can login to phpmyadmin. As i say everything else installed correctly.

    You mentioned it possibly being a path issue. All directory paths are set as per your instructions and phpmysql is installed in the devwwwpma folder. I am using windows vista.

    • Rick

      Ok as a follow up to me previous comment i have looked into the issue “Cannot load mysql extension” and realised in my php folder there is no “ext” folder? Should there be? Has my install of php not worked properly? In the php folder i have 13 files including php.ini and 1 folder called “dev”, is that right?

      After googling further I ran a re-install through “programs and features” and did everything the same except i installed 1 extension for mysql so now i have “php/ext/php_mymsql.dll”. But i still get the error.

      So next i looked in php.ini and found

      “; Directory in which the loadable extensions (modules) reside.
      extension_dir = “./””

      which i changed to “extension_dir = “C:dev\progs\php\ext””

      later in php.ini i found

      “; extension=msql.dll”

      and changed to “extension=php_msql.dll” removing the ; and changing the filename to match what i have. But then the apache server wouldn’t restart and in the error details that came up it was showing “php5ts.dll” as causing a problem.

      I have added the ; back into the line “extension=php_msql.dll” to comment it out and the apache server will now restart but i still get the original error. I have also removed “libmySQL.dll” from the system32 and windows folders.

      So basically to recap i have “php5ts.dll” in windows and system32 folders, the mysql extension installed in php/ext/php_msql.dll, the path set in php.ini to “extension_dir = “C:dev\progs\php\ext” but the line “;extension=php_msql.dll” is commented out with the ; otherwise apache will not restart and references “php5ts.dll” in the error that pops up.

      Please could i get some help on this as i’m stuck now with my head in pieces :)

      • Tomas Varil

        Hello Rick, sorry it took me so long, the article is a bit old and I am not checking it quite often and also there is no way to subscribe to the comments. You are still writing about php_msql.dll which is not the right library for MySQL. I think it is a library for Microsoft SQL. I recommend to uninstall PHP again and delete all other PHP dll remaining files which you copied to System32 and other folders. After you are done, grab a newest copy of PHP 5.3.3 VC6 thread safe x86 version and install it the same like it is described in this article. And let me know if it works.

  • David

    PHP Installation and configuration
    Run the downloaded PHP install package. Click Next, accept the terms and click Next again. On the next screen click Browse and navigate the installation program to install PHP to “C:devprogsPHP” and click Next. Now select Apache 2.2.x Module and click Next …. sorry this is the point where I have shipwrecked!
    I dont have there Apache module and also I have one option more before selecting the modules… there is to select the webserver that I want to isntall and than nothing more, so in modules is not present the Apache and dont know what to do at this point … thanks for help, urgent

    • Tomas Varil

      Hello David, it seems like you downloaded wrong installer. The installer must be VC6 threaded safe version ;)

  • Rayne

    Hi Tomas great tutorial I’ve been looking for something this far into details for a long time.
    However i am having a same problem as Abhinav.
    I am seeing all the documents and folders in a form of a text. Like a directories tree but without the lines that indicate which folder is inside of which parent.
    After installing apache and PHP everything was working fine i got all the messages you mentioned. Then i tried adding that php line to get the php screen showing me all the info about the php version i have installed, but all i saw was that line written on the screen.
    I added a simple template to see if it will work. One template loaded nicely but all others failed. All i see are folders and files in txt form.
    I’m using XP SP3.

    Thank you for your time and effort.

    • Tomas Varil

      Hello Rayne, sorry it took me for long. I have no idea what is causing this kind of error. It seems like PHP is not successfully loaded. Could you please provide more information if it is not solved (like where did you finished in the tutorial, did you make your own modifications of configuration file)? And if it is solved already, how did you get it to work? I recommend to try to install MySQL and then phpMyAdmin and try what phpMyAdmin say when you want to login. It has a good error reporting system, so it could lead us to solve the problem.

  • Matt

    All went well till I got to the end. I log into phpMyAdmin and I get a blank page with http://localhost/pma/index.php?token=210c941d0f0b2cf4fecfb9e4d5453976&phpMyAdmin=jcdb59bblhahie5q4pn2clqim0sp8vdr

    and at the bottom “waiting for http://localhost/pma/index.php….”

    Any suggestions?

    • Tomas Varil

      Hey Matt, just look at the comments ;) go to your phpMyAdmin’s config file and change the localhost to that should help.

  • mekibebe

    wow! nice tutorial .it’s easy to understand and work with it. For me all things are done properly thanks a lot. finally, i need other tutorial for Linux(fedora 11) on the same title or what is the difference is there ,if you can .

    • Tomas Varil

      Hello, sorry it took me so long, but I was on a vacation. I do not know how it is on fedora I have tested it only in Ubuntu and it is very simple due to packages manager. So I think it will be similar on fedora if it has its packages repositories. If you are interested I can point you on how to install it on Ubuntu…

  • Bob

    Great tutorial. Apache successfully installed, PHP successfully installed. On the final installation screen for mySQL get a red x by start service. Cannot created Windows service for MYSQL5. Error:0.

    • Bob

      Actually, I did manage to get rid of the Error: 0, which was being caused by an old service not getting uninstalled. All the same, it is not starting the service.

      • Bob

        It helps to read, don’t you know … was installing the 32-bit version on a 64-bit machine. There was also a MySQL folder in the hidden Program Data folder that wasn’t getting deleted. NOW the service is running =-) and now I can continue with the rest of the tutorial. Hope this provides some info to those who run into the same problems.

  • Rick Shieh

    Hi Tomas,
    Great tutorial! Thanks! I have followed your instructions to install Apache 2.2.15, PHP 5.3.2, MySQL 5.1.48, and PHPMyAdmin 3.3.4 on my Windows 7 64 bits operation system. I can successfully connect to Mysql database by using mysql_connect(“″,”root”,”mypassword”) and see PHPMyAdmin login screen. However, I get a blank screen (White Screen of Death) after I enter my user name and password and IE say “Waiting for http://localhost/PHPMyAdmin/index.php….”. I am appreciated if you can help me to resolve this problem. Thanks in advance.
    Best regards,
    Rick Shieh

    • Rick Shieh

      After I changed the host from “localhost” to “” on, the problem has been resolved.
      $cfg[‘Servers’][$i][‘host’] = ‘’;

  • MikeE

    Ok Solved my problem. Firstly I used the V9 PHP which is meant for IIS. I then downloaded the V6 version of PHP with the windows installer. I still had the same problems. I then uninstalled and used the Zip file of the V6 non ssl install and extracted it to the folder and made the required changes to the php.ini and httpd.conf files. This was my problem on Windows7 with Apache 2.2.15 PHP 5.2.3 and MySQL Server5.1.

    Thanks for all the help in this Blog it is one of the clearest and most detailed installation docs I could find.

    • Tomas Varil

      Yeah VC9 version is not for Apache :-) At downloads it was said to download VC6 version non ssl ;-)

  • Mike

    I did exactly all steps you provided but restarting apache produce message “not able to load dynamic c:\dev\progs\php\ext\php_curl.dll
    library specified module could not be found” but this file is there ?
    Also, after changing configuration in httpd.conf typing localhost
    still produced “It work” instead “index of”. Any ideas why it happened ?
    Operating system on my machine is XP professional with service pack 3.

    • Tomas Varil

      I have got this problem in XP Mode on Windows 7. When I need to downgrade to PHP 5.2.13 because I need to install Zend Optimizer which does not work with PHP 5.3.X. I did solve this php_curl.dll issue. But I cannot remember how I did that exactly :-( I think I solved this issue by copying ssleay32.dll and libeay32.dll from PHP directory to Apache/bin directory and that solved my issue with Apache crash when loading php_curl.dll library.

      If Apache is showing “It works!” you should first clear cache of your browser and try it again. If that does not help, look in the httpd.conf file, if you specified the path from where the Apache should load the web pages. There is nothing other what can be done about this issue.

  • Rodney

    I have 2 websites that i will be using php for , is it possible to have both on my localhost for editing purposes and if so how would i change the local host location in PHP … i know how to do this in IIS very easily but can’t figure out how to do this in php

  • Leandro

    It’s just amazing. Thanks a lot! =D

  • Alexander

    Thank you for your help. I have a question about the PHP setup.

    Apache is installed successfully.

    PHP 5. 3.2 is installed successfully.

    When testing the index.php, it is giving text instead of the HTML page.
    I doubled check all the steps and still get the same thing .

    • Tomas Varil

      If you open Apache Service Monitor from your taskbar can you see Apache/2.2.15 (Win32) PHP/5.3.2 at the bottom?

      • MikeE

        When I look in the service monitor I see the apache2.2.15 (win32) PHP/5.2.13 at the bottom.
        Any ideas to resolve as I also had previous installations which I removed including the install directories. I then reinstalled apache which worked and showed the “It Works” entry. PHP was also reinstalled and does not seem to function even though it is showing as part of the Apache Service Monitor.

        • Tomas Varil

          Hey MikeE, I did not understand what is your problem? The same like Alexander have written before?

  • Wes Peery

    Ok… localhost/pma will load… But when logging in as root/root.. It will just go to blank screen.. token ID will be shown in address bar, but nothing loads.. I have setup the config file also. Let me know what you think.

    • Tomas Varil

      Hello Wes, thank you for your question. phpMyAdmin should work out of the box, if everything is setup OK. It seems like your problem should be the one I was talking about during the tutorial. The session save path problem and the mysql connection problem. Just to make sure, did you copied the php5ts.dll file in System32 and Windows directory? And please provide other information like Windows version and how far did you get in tutorial. Did you skipped some steps?

      • Wes Peery


        Yea I copied the php5 files to both windows and system32..

        I even used the Phpmyadmin setup process to set up server and still not work. I am on Windows Vista 32bit SP2.. I followed exact instructions. PHP and Apache are both working. Is there a way to test mysql? If not, I will just start over and/or try installing on my other machine which is Windows 7 64bit.


        ==== ADDED ====

        I can connect to the mysql command line client.

        • Tomas Varil

          Hey Wes,

          you can test whether the PHP can connect to MySQL database with the following script.

          In C:devwww make a file called for example “test.php” and put there these lines:

          echo ‘Connecting to OBMS Database… ‘;
          $link = mysql_connect(‘localhost’,’root’,’root’);
          if (!$link) {
          die(‘Could not connect: ‘ . mysql_error());
          echo ‘Connected successfully’;

          Save the file and point your browser to localhost/test.php

          I expect it will show “Connecting to OBMS Database… Could not connect”
          If so try to copy the file libmySQL.dll from C:devprogsMySQLbin to C:WindowsSystem32 and restart Apache.

          • Wes Peery

            Hey Thomas…

            Nope still not working.. Not connecting to mysql.. copied the file to both windows and system32..

            I will just start all over. Thanks for the help. I will let you know if I need anything else or let you know when it is success :)


          • Tomas Varil

            Please let me know ;-) I had a one last idea what to do before you start over. Try to change “localhost” in phpMyAdmin to “” maybe it could help too, like Bernardo below suggested ;-)

      • melchor

        can you help me for this message
        what should i do to solve this issues


        You don’t have permission to access / on this server.

        please help me tnx
        i wait for your replay

        • Tomas Varil

          Is that a phpMyAdmin error message? When it is appearing, before login or after? Which OS are you using? What about Apache error log in Apache directory? Please provide more information.

  • Wes Peery

    Thanks! One thing.. Setting up the for phpMyAdmin should come before logging in with root/root… I was stuff for almost an hour trying to log in :)

  • Cuneyt

    apache restart > request operation has failed

    • Tomas Varil

      Dear Cuneyt, this could have many reasons, could you please provide more information. When did you get this error? Which part of the tutorial?

  • Abhinav

    Installed Apache successfully. Downloaded PHP 5. 3.2 and installed it. When testing the index.php, it is giving text instead of the HTML page. Am I missing something or doing something wrong. Please help. Thank you in advance.

    Fyi..I followed the instruction and updated the Apache conf and PHP ini files as directed in the steps.

    • Tomas Varil

      Hello Abhinav, thank you for your question. Just to make sure, could you please tell me, which version of windows you are using? Also did you get the “It works!” message after Apache install? It seems that php apache library is not loaded…or the phpinfo script is not correct…

  • Tomas Varil

    For those of you having error with new function called tracking in latest phpMyAdmin 3.3.3. Just add line:

    “$cfg[‘Servers’][$i][‘tracking’] = ‘pma_tracking’;”

    below line:

    “$cfg[‘Servers’][$i][‘designer_coords’] = ‘pma_designer_coords’;”

    in file and restart web browser. The error should be now solved and new table called “pma_tracking” in “phpmyadmin” database will bee created.

    enjoy ;-)

  • Tomas Varil

    Hello Frankilin, did you edit the hosts file which is described in pre installation steps? Also check out if your firewall is not blocking IP address by default…

  • Frankilin

    I had problem “Connection to Failed ” on Windows 7. Anyone have anyway for solve the problem. Thank in advance.

  • kyle

    At there is release of Apache 2.2.8 but at,
    the latest (stable) version is 2.2.15. I’m confused, how could it be. Can someone explain me please? :)

    • Greg88

      because 15 is greater than 8 :D
      You shouldn’t look according to place value ;)

    • Tomas Varil

      You can find the latest current stable releases only at, and That is why I use this tutorial to setup localhost web server. WAMP, XAMPP and Appserve are always bit or more otutdated…

  • Bankkonto Vergleich

    Nice tutorial, but… “the biggest advantage is that you have all over your control – because you configure all by yourself. ” IMHO the biggest disadvantage is: The day after you will not remember anymore what you did exactly and where to change this and that, if you are not a terminal hero :-)

    • Tomas Varil

      It is not about being a terminal hero ;-) When you repeat this tutorial three times, you will agree, it is not so complicated and hard to remember the steps, which are still the same. And if you forget you can still look here for help. Anyway there was said, that you can still use WAMP or XAMPP if you feel more comfortable with it. So you have still the opportunity to select solution which more fits your needs ;-) This tutorial is for people who is interested in the problem and they like to know more and how to start…

  • JC Johnston

    Great tut. I have been using the install packages like XAMPP but, for testing having everything setup, configured and installed separately is the way to go. I prefer to run my web server on a Linux server since my web hosts are on a Linux system. But since I do not have a Linux server, I can follow this tut and install it on my Windows 7 Desktop

    • Tomas Varil

      Linux installation for example under ubuntu is much easier, because all packages are at the repositories, they are not often up to date, but it works nicely :-) There are few things to take care, but it is not so complicated…

  • Tony Dunsworth

    I’m getting weird errors after I’ve installed PHP and the only remedy to re-start Apache is to comment out the PHP lines at the end of the httpd.conf file. Any ideas why it’s not working for me on both Vista and Win7?

    • Tomas Varil

      What kind of errors you get? And when? Which part?

      • Tony Dunsworth

        When I finish installing PHP and the changes to php.ini, I get the restart errors in Apache. I was able to get it to work this time and finish everything, but I still get that error from time to time in Vista. I think part of it, at that time, was installing too many features.

  • Tomas Varil

    Guys I do not want to be rude. But have some of you, who has been talking about WAMPP or XAMPP read the article? Just few paragraphs at the start? I would say that NO is the answer ;-)

  • Srikanth

    Why does one have to install PHP | MySQL | Apache separately when there are open source software like lampp and Xampp available?

  • Mouhamad Kattan

    Thank you vry much for this nice tutorial , i changed to windows 7 and then mov back to vista cuz the apache 2.0 and php 4 didn’t work on windows 7 , and i wasn’t have no idea how to setup apach 2.2 and php 5.3 , thank you again

  • MorayWeb

    Excellent, this might just be the dev server article I have been waiting for! I am looking forward to trying out for myself and ditching WAMP after all these years…

    …I always thought it was more complicated than that!

  • why rather not use xampp then setting up everything differently and it also take few mins of time.

    I think some people will prefer this method too for their convenience.

    • Saad Bassi

      Read the article again.:) There are many pros of using this method.:)

  • Marek Kaczkowski

    …or the easier solution MAMP(Mac) XAMPP(Linux/Win/Mac) package and you ready to go. Super-easy to configure and use. Peace!

  • McConnell Group

    Good write up Tomas, for those who don’t have a local host of MySQL I use this to test out themes.

  • Tomas Varil

    Sorry guys, I have found that I lost some text in tut. In Apache configuration number 3. There is:

    Go to line 205 or search for “progs/Apache/htdocs”>” and replace it with ““

    there shuld be:

    Go to line 205 or search for “” and replace it with ““

    We will fix it as soon as possible.


  • AKLP

    Thanks for the guide :)
    I do use uniserver but knowing the “manual” way is always better.

  • Rilwis

    I would like to use all-in-one package to do all of this stuff for me. XAMPP is a good choice, but there’re many other packages out there. It makes the install process faster, users don’t need to think about the configuration. All is ready for use.

    If you’re a PHP programmer, maybe installation each component, their configuration are useful. But if you just want a rapid installation, and want to use CMS, web apps or just design, I think this is not the best choice.

  • Bernardo

    Excellent post, works fine for me!

    Just a a few tips:

    – If after logging your phpMyAdmin shows a blank page, do this:
    1- Open your file.
    2- Search for a line with: $cfg[‘Servers’][$i][‘host’] = ‘localhost’;
    3- Replace the line above with: $cfg[‘Servers’][$i][‘host’] = ‘’;
    4- That’ s it!

    -If after hitting the submit button your wordpress shows a blank page
    1- Open your wp-config.php file.
    2- Edit the file with the configuration that Tomas already explained.
    3- Done!