Sie sind auf Seite 1von 3


How to manually install Apache, PHP and MySQL on Windows? - Super User
sign up

Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration

log in


Take the 2-minute tour


How to manually install Apache, PHP and MySQL on Windows?

How do I install Apache with PHP support and the MySQL server on Windows without using any readyto-use packages like WAMPServer or XAMPP ?





asked Apr 30 at 18:24

Andr Daniel
829 3 21
add a comment

1 Answer

First, I recommend you read the Platform Specific Notes of Apache for Windows - it explains some
Windows-specific features like running as a service that you don't have on other OSes and you probably
have never used before.
As mentioned in these platform specific notes, Apache doesn't provide binaries for Windows, however
they have links to several third-party sites that provide binaries, for example Apache Lounge.
From that website, we can download either the 32-Bit version (win32) or the 64-Bit one (Win64) - if your
OS is 64-Bit you should always try to install 64-Bit versions of software, but note that you'll need to use
64-Bit modules as well, that means if you only have a 32-Bit module then download the 32-Bit Apache.
Here's the version that I used when writing this : Apache 2.4.10 Win64.
As of 31/08/2014, this is the latest version - I'll try to keep this answer up to date.
Once downloaded, just extract the Apache24 folder to the root of your hard drive, so that you have a
path like C:\Apache24\bin.
Open a command line window (Windows+R and type cmd then press Enter), change directory into
C:\Apache24\bin and run httpd.exe, normally it shouldn't print any errors.
If you get an error dialog stating that MSVCR110.dll is missing on your system, you'll need to install the
Visual C++ Redistributable for Visual Studio 2012 - as always, when prompted, select the appropriate bitversion : vcredist_x86.exe for 32-Bit systems and vcredist_x64.exe for 64-Bit ones.
If you get an error saying that it can't bind to port 80, check if another application uses that port - also
Skype is known to use ports 80 and 443 by default; uncheck "Use port 80 and 443 as alternatives for
incoming connections" in its advanced connection settings, restart Skype to apply the changes, and then
you should be able to start Apache without issues.
A warning like Could not reliably determine the server's fully qualified domain name
can be ignored for now.
Windows Firewall may prompt you to allow Apache to communicate on specific networks, I recommend
you use the default settings : allow it on home and work networks, but not on public/untrusted networks.
Then, open a browser and browse to http://localhost, if you see a page saying It works !
then it means your Apache installation is working.
You can now stop the currently running Apache by pressing Ctrl+C in the command prompt.
If you got a warning about not being able to determine the system's fully qualified domain name, fix it by
editing C:\Apache24\conf\httpd.conf and editing the ServerName variable (it should be already
there in a comment, just uncomment it and change it) :
ServerName <yourhostname>
Replace <yourhostname> with either the system's host name or localhost.
Finally, if you want to run the server automatically when the system starts (even if nobody logs in), you'll
need to run it as a service - in a new elevated (as an administrator) command prompt, type :



How to manually install Apache, PHP and MySQL on Windows? - Super User
need to run it as a service - in a new elevated (as an administrator) command prompt, type :
httpd.exe -k install
That's it, now you have a new service in Services (Windows+R then type "services.msc" then press
Enter) named "Apache2.4" that you can control just like any other Windows service.

Restricting Apache access to localhost only - optional

If you're setting this up for development purposes you want to make sure that no one except you can
access it, your firewall should already take care of that but let's add another layer of security to it by
telling Apache to accept requests from the local machine only.
Open Apache's configuration file C:\Apache24\conf\httpd.conf, search for the default directory
block <Directory "c:/Apache24/htdocs">.
At the end if it, there should be a line Require all granted, this means that anyone can access this
server. Let's make that Require local which only allows access from the local machine.
Save the file, if you're already running the server then restart it in order to take our changes into
account, and now only localhost has access, everyone else will get a 403 Forbidden.

I suggest you read the official PHP documentation about installing it on Windows systems.
Download the latest PHP binaries from the official PHP for Windows download page, choose the threadsafe version that matches your Apache installation's bit-version (x86 for 32-Bit, x64 for 64-Bit).
The non thread-safe version is only when running as a CGI binary - more info here.
The version I used is this : PHP 5.6.0 VC11 x64 Thread Safe.
Create an empty PHP folder at the root of your hard drive, and extract the previously downloaded
archive there, you should have a path like C:\PHP\ext, otherwise you did something wrong.
In C:\PHP, rename the php.ini-production or php.ini-development (depending on what you
want) to php.ini.
Open that php.ini file, search for extension_dir = "ext" and uncomment that line (remove the
first ;). This sets the default extension dir to ext (which resolves to C:\PHP\ext and avoids having
to prepend ext/ to all extension's paths manually like in previous versions of this post.
Now configure Apache to use that PHP, by editing C:\Apache24\conf\httpd.conf - after all the
LoadModule lines, add the following :
LoadModule php5_module C:/PHP/php5apache2_4.dll
<IfModule php5_module>
DirectoryIndex index.html index.php
AddHandler application/x-httpd-php .php
PHPIniDir "C:/PHP"
Now try to start Apache manually by opening a command prompt in C:\Apache24\bin and running
httpd.exe - if you see no errors, it means your configuration file is valid and PHP is most likely
You can test your PHP installation by creating a file like info.php with <?php phpinfo(); inside
and going to http://localhost/info.php - you should see quite a bit of info about your system and
your PHP installation and all its modules. If you get something else like an "Internal server error" that
means something's wrong.
You can now kill your current Apache process (Ctrl+C in the console) and start the service - the following
part doesn't interact with Apache and can be done with the server already started.

Composer - optional
Composer is a tool for dependency management in PHP, like a package manager. It allows to easily
install PHP packages and even entire frameworks.
Composer requires the PHP OpenSSL extension to be enabled, so let's enable it in C:\PHP\php.ini.
Use your text editor's search function to search for php_openssl.dll, there should already be a
commented line for it, just uncomment that line.
Now download Composer's Windows installer from their download page - or just use this direct link.
Follow the instructions, when prompted for the path to PHP, browse to C:\PHP and select php.exe.
That's it, Composer is now installed system-wide and can be used from anywhere - you can try it out, just
open a new command prompt (you can't use one that's already open since it needs to read the new
PATH variable set by Composer's installer) and type composer.
You should get a nice ASCII-art logo and something like this :
Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28

PHP MySQL extensions - optional



How to manually install Apache, PHP and MySQL on Windows? - Super User

PHP MySQL extensions - optional

If you want to access your MySQL database from PHP, you'll need to enable extensions that allow you to
do so, like php_mysqli or php_pdo_mysql - I recommend enabling them both.
Open PHP's configuration file C:\PHP\php.ini in your text editor and search for php_mysqli or
php_pdo_mysql - they should already be there, uncomment them.
Done, now you can access any MySQL database using either mysqli or PDO.

On the MySQL Installer download page download the web installer mysql-installer-webcommunity-xxxxx.msi.
I used mysql-installer-web-community-, which is the latest version as of 31/08/2014.
The installer will automatically install the appropriate version (32-Bit or 64-Bit) depending on your system,
even though MySQL's bit version doesn't have to match Apache's and PHP's one but it's still beneficial to
use the 64-bit version of your system supports it to take advantage of more than 3 GB of RAM, that's
quite important as database servers tend to use a lot of RAM.
Follow the steps in the installer, if you're installing this for development then the Developer default
will be your best option, it'll also install MySQL Workbench which is a native GUI client, thus avoiding you
having to install slow web-based tools such as PhpMyAdmin if you aren't comfortable with using the
command line client.
Once everything is installed the installer will ask your for some basic configuration values, I recommend
disabling "Open firewall port for network access" unless you want to access the database from another
machine on the network.
Set the root password - if it's only for development purposes and your firewall blocks incoming
connections from the network then a strong password isn't necessary.
Finally, you can disable the useless MySQL Notifier by right-clicking the tray icon, going into Actions ->
Options, then untick the Run at Windows Startup checkbox and apply. That'll save you a few MBs of
RAM and avoid slowing your machine down when it's booting.
And that's it, you now have a fully functional WAMP server that runs as a service and doesn't depend on
any user (accessible even if no one is logged in).
Note that I have no idea about the security of this, for development purposes I'd say this is
pretty safe since your firewall should block incoming connections for both Apache (port 80
and or 443) and MySQL (port 3306).
This was tested on a Windows 7 installation, it should also work just fine on Vista, Windows 8 and
possibly Windows Server 2008/2012 - feel free to comment and/or downvote if that's not the case.
edited Aug 31 at 8:12

answered Apr 30 at 18:24

Andr Daniel
829 3 21

I would just note that it might be necessary to uncomment the extension_dir = "ext" line for Windows in
php.ini. jaffamcneill Aug 16 at 20:26
@jaffamcneill indeed you were right, I updated my answer to account for that. Andr Daniel Aug 31 at
add a comment

Not the answer you're looking for? Browse other questions tagged windows



web-development or ask your own question.