Making XAMPP (Apache) work with IIS on Windows XP/Vista

Update: This application will help you track down which applications are using which ports on Windows – very helpful for debugging if the steps below don’t solve your problem, or if IIS is not the only application answering on port 80:

Also, if you don’t specifically need all the features of XAMPP, but would like to run PHP/MySQL applications through IIS, give Web Platform Installer a try. Through WPI, you can choose to install PHP directly within IIS (so that IIS can serve both ASP.NET and PHP applications on port 80, for example) and you can also have a ton of applications installed and configured automatically for you, such as Drupal, WordPress, and Moodle (among many others). However, if you are still looking to run XAMPP specifically, or just run an Apache instance along with IIS, check out the instructions below. Thanks for visiting!

Original Post:

Found out the hard way that the default XAMPP install for Windows will attempt to install Apache as a service configured to run on Port 80 (no surprise, and probably good default behavior). But, if you’re like me, and have IIS already installed and running, for whatever reason, you’ll probably want to configure XAMPP to run Apache on a different port.

I initially tried merely modifying the httpd.conf file located (on my system) at C:\xampp\apache\conf, but the service would still not run. So, through a bit of searching on the interwebs, I found out what exactly needs to be changed to allow XAMPP to co-exist with IIS configured to run on Port 80, and Apache (in my case) to run on Port 8080 (and SSL running on Port 4499):


  • Search for “Listen 80”, change to “Listen 8080”
  • Search for “ServerName localhost:80”, change to “ServerName localhost:8080”


  • Search for “Listen 443”, change to “Listen 4499”
  • Search for “<VirtualHost _default_:443>”, change to “<VirtualHost _default_:4499>”
  • Search for “ServerName localhost:443”, change to “ServerName localhost:4499”

Then, you should be able to start Apache successfully through the XAMPP control panel.

Let me know if this works for you; I’m just starting to mess with XAMPP on Windows (I’ve been using it on Linux for a while).

199 thoughts on “Making XAMPP (Apache) work with IIS on Windows XP/Vista”

  1. hi, just one day late, same idea, same problem. while I was able to change the port 80 of IIS to 8080, changing the SSL port is not such an easy task. using your little trick starting apache worked well though.


    I am trying to install Moodle to learn it and test it on my Vista laptop before putting it on a server. I downloaded XAMPP and was able to make it work per your instructions. For the Moodle installation, I have been following this installation guide…

    …but have gotten hung up on step four, “creating a database.” Although the XAMPP Control Panel says that Apache and MySql are both running, I cannot access localhost in my browser. Any ideas?

    I searched for an answer for hours yesterday, and it seems to be a common Vista issue, but I was unable to nail down a solution. Would the port change that I made (above) affect the computer’s ability to find localhost? If you answer please break it down as simply as you can, I am very new to this.



  3. Off the top of my head, the problem is that it’s trying to access localhost:80 instead of localhost:8080.

    By default, any web address you type in attempts to access port 80 (or 443, if the address starts with https://) because this is the default HTTP protocol port. In other words, typing http://localhost in your address bar is the same as typing http://localhost:80. If you have an option to change the address that the application uses, make sure to set it to http://localhost:8080, or change the port to 8080, if that is an option.

    Let me know if this helps you out, I’m curious to see if this works for you. Thanks! =)

  4. I tried your suggestion, and apache still starts with port 80. I changed to 8080 and 4499 as you said, in the files you said. Stopped apache, restarted, still port 80 when I run refresh from the console.

    Any other ideas?

  5. Would anyone be able to point me to the apache config file on a *ix (Ubuntu) server. Install is in /opt/lampp.

    Any response will be greatly appreciated.


  6. Walt,

    Thanks for your comment!

    The Apache config files for XAMPP on a *nix server should be in:

    * /opt/lampp/apache/conf/httpd.conf
    * /opt/lampp/apache/conf/extra/httpd-ssl.conf

    Hope that helps!

  7. Thanks! Worked for me! I couldn’t find any indication of port 80 being used other than Apache not running through XAMPP. Installing the latest version of Apache separately did work, but then you have to do PHP, MYSQL manualy. Good clear instructions!

  8. Just what I was looking for. I have IIS and did not want to change the port on that since I use it frequently and is my primary web development environment. I am now dabbing into PHP, so that is why I am using XAMPP to give it a try. Thank you so much for your clear explanation of how to change the ports! I am now up and running wi! Thanks again!!!!!!

  9. You Willwm, said:
    “By default, any web address you type in attempts to access port 80 (or 443, if the address starts with https://) because this is the default HTTP protocol port. In other words, typing http://localhost in your address bar is the same as typing http://localhost:80. If you have an option to change the address that the application uses, make sure to set it to http://localhost:8080, or change the port to 8080, if that is an option”

    Thanks to you all that works!
    Now is there a way that I can change things to access localhost:8080 instead of typing that in everytime?
    I’m also adventuring into Drupal and will see what happens when I get that up and running to see if that works correctly. I’m just a little gun shy with the port issue.
    What would I change without affecting my current Vista system that I’m comfortable with currently?

    Thanks for the help!

  10. wait, just checked on localhost but i cannot access it… any help??? [just had apache running, but localhost can’t be accessed]…

  11. I’m actually going to cry if I can’t get this working. I followed the steps and edited the files but Apache still won’t start.

    I use Vista, I think IIS is installed and my Skype is turned off.

    How come your steps worked for others but not me?

  12. Thanks again everyone for all of your comments!

    @Kieran: Have you tried using a port scanner against your own machine to see which ports are active? I’m venturing to guess that you might have something else on port 8080 besides Skype or IIS.

  13. @Kieran: Hmmm. Looks like my guess was incorrect, it doesn’t seem like anything is running on your port 8080. Can you e-mail me your httpd.conf and httpd-ssl.conf files? I’d like to take a look and see what’s up.

    Also – have you tried disabling Windows Firewall?

  14. Thnx a lot. For a long time i had this problem and was searching for a solution. Even i downloaded a GUI tool to change the port number.

  15. Thanks; I have got it working. Port 80 for IIS and 8080 for XAMPP. My provider allows me to mix .php and .asp files in the same folder; i.e. default.asp and config.php both get interpreted. How can I do that at my home server?

  16. willwm

    much thanks – that last ssl file edit was what i had been missing all along (although i sensed it needed to happen, just wasn’t sure where) – hours of research and work comes to an end upon discovery of this page – thanks for taking the time to post the info!!!!!!!

  17. In Windows, when viewing xampp-control.exe in a hex editor, “http://localhost/” and “80” are hard-coded as null-terminated strings. There are enough null characters available that you can replace “80NULLNULL” with “809NULL”, but that doesn’t get you to 8080. C code uses a NULL character (0x00 in hex) to terminate strings, so you *must* leave the final one as a separator before the next string. It’s risky to edit the executable if you don’t know what you’re doing. On the “http://localhost/”, you can squeeze three more positions out of it, so you can add something like “:99”, but that’s it. The “localhost” string affects the URL that launches when you click the Admin button for the Apache server, and the “80” string only affects what displays in the Console’s output. The true control is in the .conf files. Mostly, the console quirks are just annoyances. You just have to manually type “http://localhost:8080/” in your browser instead of clicking the Admin button in the console.

    IIS can still run on port 80.

  18. Just went through the same nightmare as well…

    Modifying to 8080 in the way described above worked well for me. However, using the CurrPorts freeware to view who was taking 80 and 443 I found out it was skype. So, instead of modifying the config I just decided to turn off skype when I need the xampp to work. This is an alternative solution for newbees like me who are worried about later side-affects of modifying the default configuration.

  19. Hi!
    Thank you for an excellent solution for a non techie like me .. my apache is running now though the screen is still of iis7 when i click on http://localhost/.I have another similar problem, even my sql on xaamp is not running coz of similar port says ..port 3306 already in use.. please suggest.
    Thanks.. Priya

  20. In regard to accessing your Apache instance, you’ll have to append the port number to the URL. Attempting to access http://localhost/ is the same as attempting to access http://localhost:80/, since IIS is running on port 80 (the default for HTTP). To access your Apache instance, if you used the same port as in the article, you’ll need to try http://localhost:8080 (for port 8080, as specified above).

    In regard to port 3306, try running the command “netstat -ab” via your Command Prompt. That should tell you what’s currently running on port 3306.

    1. Hi first of thanks for your support . My localhost:8080 is working fine but my phpmyadmin is not working giving Error
      MySQL said:

      #2003 – The server is not responding

      because when i am going to start my sql showing busy ….
      Mysql started [port 3306] I checked also in command prompt using “netstat -ab” but couldn’t find port 3306 .

      Please help me . I really upset now

  21. For people that don’t like “localhost:8080” you could simply set up an entry in your hosts file. This would allow you to not only give a more meaningful name to your development site, but also gives you the option of typing less (and isn’t being lazy what programming is all about?)

    Default hosts file location in XP: C:\WINDOWS\system32\drivers\etc\hosts
    Default hosts file location in Vista:

    In the hosts file you should see a couple of examples (including how your localhost was set up in the first place). Simply follow this format to create your own personal URL (noob note: Just to make sure everyone is aware, this is like creating a DNS entry just for your individual box, no other computer looks at your hosts file…)

    For example I might place do: nameofproject.local

    I personally prefer that all my hosts entries end in a .local so that I always know that I am on my local machine.

    It should also be noted that you must create the appropriate httpd.conf entry (so edit the ServerName section of the VirtualHost declaration)

    PARENTS: Want to keep your kids off myspace and facebook? Simply edit the hosts file on your machine to take them someplace safe, like maybe here:

  22. I’ve been struggling with this issue for a while -ever since a friend gave me a Vista (home premium) desktop. I have IIS and Xamp happily running together on my XP laptop, but can’t seem to get vista to play nice.

    It seems IIS is running on 8080 because that is is what comes up when I type localhost:8080. I tried changing apache confg to listen to 8000, but that does not seem to work.

    Is there a way for me to see and change what is is listening to what ports?

  23. for those who have the problem accessing the http://localhost, they must go to host file (c:/windows/system32/drivers/etc/host)
    find the line ‘::1 localhost’
    and erase it
    than everything is ok

  24. hii people..

    here my story goes//
    currently my college’s web site is running n IIS
    i devloped a new 1 using wordpress (PHP)….nd want to use WAMP to replace it…but there are sum applications which i hav to use from the IIS m using IIS redirecting option……..
    i hav changed apache port to 8080..but still m not able to access my wordpress site….plssss help..

  25. I worked through this and changed httpd.conf to port 8080 as described. When starting Apache through the Xampp control panel I get Apache Started [port 80] but it hasn’t and is using port 80 instead of 8080. I tried as a service, won’t start either.

  26. ah, I have searched this solution for a whole afternoon, I think we need to ask google to put this page in the first range, for keywords like:port 3306, in use, xampp…

    Thank you very much

  27. Finally, i can open localhost page, thanks very much.
    there still a question:
    if i wanna test ASP coding, can i use xampp? if cannot how can i test ASP?
    Thank you !

    1. Thanks for your comment, Catherine.

      In regard to ASP, are you referring to Active Server Pages? If so, you’ll need to either test your ASP code on the IIS side of things (much easier), or you can try using the Apache::ASP module for Apache, but I’d highly suggest the IIS route instead.

      For info on the Apache::ASP module, check out this page:

  28. only configure that?how about IIS?should i disable or enable?if need enable it,what step to do in IIS?pls reply asap T_T I got problem xampp with vista

  29. IIS should i enable or not?if should enable what step to do?im follow ur guide,but still cant access my localhost page…
    myweb is equal to my main page
    im browse http://localhost/myweb << still cant diaplay my page,but work on my xp…pls help me T_T

  30. i have tried to run both IIS 7.5 of windows 7 and apache2.2.
    To make both the servers work at port 80 we have to install apache first and then IIS but the problem is that only one of the server will work at a time.

  31. Hi Williamo,

    Thanks to your post I can now use IIS and XAMPP at the same time. However, I have another problem.

    I’m using XAMPP as I am developing a CMS site using WordPress but also developing other projects using C# hence IIS should always be up. The tutorial you posted worked like a charm, I changed Apache’s port to 8080 and I’m able to access the XAMPP page through http://localhost:8080/xampp. But when I tried running my WordPress site at http://localhost:8080/wordpress I am being redirected to http://localhost/wordpress. It seems that the WordPress site is forced to use port 80. Do you have any idea why this is happening or do you have a similar experience using, say, Drupal or Joomla?

    Thank you.

    1. Looks like this *should* solve the issue:

      I haven’t tried WordPress on XAMPP recently myself, as I’ve found the Web Platform Installer to serve my needs quite well for a quick and easy WordPress (or Drupal, etc.) setup on IIS w/PHP & MySQL. If you don’t specifically need to run WordPress on Apache (versus IIS w/PHP), this might be worth a shot:

      Thanks for your comment!

  32. Hi Willwm! I did the changes you had suggested, but the apache still doesn’t working. When I try http://localhost I got Error 404, although Apache is running on the control panel.

    Do you have any idea what going on?


  33. it worked .. apache and mysql working
    it says running

    but when I click on admin button I got this message
    “HTTP Error 404.0 – Not Found
    The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.”


  34. well thanx, willwm!
    I had also the problem on win7 that all users had to be able to write into the xampp-directory… drives me mad – but in the end, it works! Maybe that helps too…

  35. hey….tis not working for me….
    plz help me out…..
    wil thr b any problem if the system’s ip address is changed….
    it was actually working fine for me….but not getting started now…
    i use vista…

  36. hai.. i’ve got problem.. when i’m trying to open http://localhost/xampp/htdocs the outcome is this

    Object not found!

    The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.

    If you think this is a server error, please contact the webmaster.
    Error 404
    03/03/10 11:11:55
    Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1

    what should i do? this error never happen to me..
    please, anybody, help me..

  37. I have a strange problem. I want to run both IIS7 and XAMPP Apache on a Win7 OS. To make both work parallell I have changed the httpd.conf to port 8080.

    Listen 8080
    ServerName localhost:8080

    However, Apache still runs on port 80!
    How is that posible?

    / David

  38. Ok.. I think I found the reason, but not quite the solution I wanted… If I run Apache manually i get it to run on port 8080 like expected, but if I run it as a service it runs on port 80 and does not look in the http.conf (still strange)…

    Any idéa how I could run it as a service on port 8080? That would be my prefered configuration…

    / David

  39. Hey – impressive cyberspace page, just looking all-around some world wide web, to allow it to a very excellent platform you may be using. I’m at the moment using WordPress for a handful of of my know-how but looking to modify one of them all around to a platform equivalent to yours as a trial operate. Anything in specified you should recommend about it?

  40. Sorry for spaming this thread… Just want to say that the problems I hade with the service not reading the httpd.conf right probably was due to me trying to install XAMPP in the C:/Program Files directory. It seems Windows interfer too much with the installation that way. Tried the default C:\Xampp instead, and it works great.

    / David

  41. thanks, i’d been looking for several solutions and none can give me the right answer…and finally…you got it!! thanks once again…

  42. Doesn’t work, unfortunately😦

    Vists to localhost:8080 or localhost or localhost:80 will give me the IIS splash page every time. Also couldn’t get it to work with Apache vhosts. Have tried Apache as a standalone or service install. WinNetStat shows Apache listening on 8080 (disabling Apache makes that line in the WinNetStat vanish). I’m using Windows 7 x64.

    Using the latest XAMPP, and IIS7.5 on the local machine. Apache has a WordPress 3.0 install on it, which will only run if I stop the IIS server.

  43. this is my problem for 3weeks already… it really helps…and i love it…😀 apache is already running now.. thank you very much for info..:D

  44. They need to prompt for this on the install. Ports…basic settings you would think. I’m back to searching text files for settings. Other than that, I like the xampp install.

  45. This was exactly what i needed!
    Everything else I’ve tried hasn’t worked at all, but this works like a charm.

    Thanks a lot man!

  46. Hello everyone. I must first preface this message by stating that I’ve minimal technical expertise as regards this content

    I’ve installed downloaded mysql, apache, filezilla etc pack from xampp, and while the control panel reads that mysql is running, when I try to access the local host via admin (“http://localhost/ phpmyadmin/”), I get this message:

    “Oops! Google Chrome could not connect to localhost. Suggestions: Try reloading: localhost/ phpmyadmin/”

    I’ve tried to use different browsers, yet this error persists. It should be noted as well that I cannot access my apache admin, as the button to do so is greyed-out.

    What might the problem be? Could it be that I’m using a university server? Could it be my location (U.K.)?

  47. I experienced the same problem. I have tried several ways that forum recommend. But nothing worked.
    The last one I cleaned the registry with a simple program, which is “CCleaner”. The results were very surprising, intricate work that I had been experiencing could be resolved by “CCleaner”.

  48. Thanks… it wasn’t working just by changing the listen port as told in other websites… but following your instruction fixed it.🙂

  49. i tried this one but my apache still cannot connect. when i tried localhost:8080, the browser only displays the message HOST DISCONNECTED.

    what could be the problem?

    thanks for your help.

  50. http://localhost:8080/xamp

    Object not found!

    The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.

    If you think this is a server error, please contact the webmaster.
    Error 404
    06/13/11 13:09:27
    Apache/2.2.9 (Win32) DAV/2 mod_ssl/2.2.9 OpenSSL/0.9.8h mod_autoindex_color PHP/5.2.6

    Why it shows?

  51. hola pero no me aparece por ningún lado el archivo httpd.conf me aparecen otros como perl.conf, asp.conf por favor ayuda.. muchas gracias.

  52. Thanks a million mate, you’re a genius! Spent hours looking on how to get this to work and only you provided this clinical remedy to the problem… the fact people are still thanking you and you posted this in July 2008 is a testament to the value of this insight.

    Don’t know if you’re still around, but can I just ask why 8080 and 4499? And will changing these give me any headaches down the line when working with PHPMyAdmin, PHP, and MySQL?

    Thanks yet again, I can finally move onto something else… this issue was starting to really annoy me🙂

    1. Thanks for your comment!

      If I remember correctly, I don’t think you should have any issues if you use different ports than 8080 and 4499; I just picked those for personal convenience. =)

  53. Hi,I have some problem for apache service starting. My OS is XP Service pack2. I have installed xampp server. But at the time of starting the apache service it shows the “apache warning terminating worker thread 0” error. I have no IIS service and skype service.

    Can you please tell me the solution.

    Thanks advanced.

  54. If there’s no need to run Apache concurrently with IIS, just disable IIS (World Wide Web Publishing Service) and run Apache on the port 80 without changing the conf files as a service by checking the “Svc” checkbox on the xampp control panel. Works fine for me. (Windows 7, IIS 7.5, XAMPP 1.7.4)

  55. Thanks much for the straightforward instructions, and especially the link to the MS installer–since mostly I just need PHP and MySQL on my local test🙂

    Fingers crossed it all plays nicely together!

  56. I formated my x32 windows7 and changed to x64 windows7, but trying to run my copied Moodle server I was presented with these console errors:

    [Error] Can’t find messagefile ‘C:\Users\…\Desktop\Moodle\server\mysql\share\errmsg.sys’
    Syntax error on line 107 of ‘C:/Users/…/Desktop/Moodle/server/apache/conf/extra/httpd-ssl.conf’
    SSLCertificateFile: file ‘C:/Users/…/Desktop/Moodle/server/apache/conf/ssl.crt/server.crt’ does not exist or is empty

    I disabled IIS on my x64 Windows OS and commented out lines 107 (#SSLCertificateFile “conf/ssl.crt/server.crt”) and 115 (#SSLCertificateKeyFile “conf/ssl.key/server.key”) in the
    ‘C:/Users/…/Desktop/Moodle/server/apache/conf/extra/httpd-ssl.conf’ and the console error remains

    [Error] Can’t find messagefile ‘C:\Users\…\Desktop\Moodle\server\mysql\share\errmsg.sys’
    (OS 10048) Only one usage of each socket address (protocol/network address/port) is normally permitted. : make_sock: could not bind to address no listening sockets available, shutting down
    Unable to open logs.

    I went further to change the ports 443 to 4200 in the httpd-ssl.conf and 80 to 8040 in httpd.conf and again the console error remains

    [Error] Can’t find messagefile ‘C:\Users\…\Desktop\Moodle\server\mysql\share\errmsg.sys’
    (OS 3) The System cannot find the path specified. : httpd.exe: could not open error log file
    Unable to open logs.

    Please kindly assist.

    Thank you Sir.

  57. I’m extremely impressed with your writing talents as smartly as with the format in your blog. Is that this a paid theme or did you modify it your self? Anyway stay up the excellent high quality writing, it’s rare to peer a nice blog like this one today..

  58. it says..
    MySQL said:

    #1045 – Access denied for user ‘root’@’localhost’ (using password: NO)
    Connection for controluser as defined in your configuration failed.
    phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.

  59. Why would anyone want to run two webservers on one system?
    More important: why two different servers?
    This is begging for complications for something that is never necesary in any situation.
    Just install IIS with your application, or install Xampp, both will work though IIS will offer more room for expansion such as clustering of servers.

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s