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: http://winnetstat.zapto.org/

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):

C:\xampp\apache\conf\httpd.conf:

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

C:\xampp\apache\conf\extra\httpd-ssl.conf

  • 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).


135 Responses to 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.
    thanks :)

  2. Thanks for the comment, and glad to be of help! =)

  3. Thank you very much for your help and clear instructions. Apache is now up and running!

    PB

  4. Awesome, glad to hear it! =D

  5. COULD YOU SHED SOME LIGHT?

    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…

    http://docs.moodle.org/en/Windows_installation_using_XAMPP

    …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.

    THANKS FOR ANY HELP YOU CAN OFFER.

    pb

  6. 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! =)

  7. 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?

  8. Which version of XAMPP and Windows are you running?

    Also, are you running Apache/XAMPP as a service?

  9. 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.

    Regards,
    Walt

  10. 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!

  11. Update:

    According to Walt, the Apache config files for XAMPP on Ubuntu 8.04 are actually in:

    * /opt/lampp/etc

  12. Worked a treat
    Thanks

  13. 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!

  14. try this link:
    http://www.apachefriends.org/f/viewtopic.php?t=30485&sid=ad460c0e33b1e301e3e6c257188af829

  15. 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!!!!!!

  16. 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!

  17. WOW… been figuring how to solve this problem for about 5 hours now…. thanks a lot!!!

    saved my neck…. :)

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

  19. Sorry if you’ve already checked this, but are you sure you’re using the right port? If you’ve followed these instructions, you’ll need to access your Apache instance via:

    http://localhost:8080 (or, http://localhost:4499, if you’re using SSL)

  20. Thanks for the help. I’ve been trying to fix this problem on my new development machine. I works fine now.

  21. This is Completely Working fine for me … thanks a tone

  22. After trying to get this to work for 2 days finally found your blog….Thank God! working fine now

    thanks

  23. 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?

  24. 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.

  25. Okay I just activated IIS 7. I presume I need to disable it. I’m going to do the port scan now. God its nice to find a blog thats managed frequently :)

  26. 80 open www-htp
    135 open loc-srv
    139 netbios-ssn
    445 open microsoft-ds

    Does this tell us anything?

  27. netbios-ssn was meant to read open btw

  28. @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?

  29. 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.

  30. 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?

  31. @Piet:

    If you’re looking to mix .php and .asp(x) files in the same folder and have them served up on the same port, you’ll probably need to install PHP for IIS instead of running XAMPP:

    http://www.iis.net/php

  32. 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!!!!!!!

  33. 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 (0×00 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.

  34. Pingback: WorldCoder » Blog Archive » Configure Apache work with IIS on Windows XP/Vista (XAMPP)

  35. Pingback: اجرای XAMPP کنار IIS در ویندوز | عصرونه - Asroone

  36. Thank You very much, it is run well with iis in 2003 server.

  37. 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.

  38. @Avidan Efody: Thanks for the info! =)

  39. 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 problem..it says ..port 3306 already in use.. please suggest.
    Thanks.. Priya

  40. 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.

  41. 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: http://tinyurl.com/8ynau8

    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:
    127.0.0.1:8080 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: http://www.youtube.com/watch?v=oHg5SJYRHA0

  42. Nice post man it was really helpful, I had never imagined the solution was change the other file…

  43. Thank you very much for this solution.
    Just used it step by step and it works for me now.

  44. cheers!

    this saved me big time.

  45. 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?

  46. cool!
    thank you very much..
    really saving my time

  47. Thanks for your valuable information. It helps me lot.
    Thanks once again.

    Bas
    India

  48. thanks a lot man…it help me.very nice post…

  49. everything is ok. it is useful
    thanks very much for this article

  50. Thanks!!! Very helpful!

  51. Thank you so much for this. It really solved a big headache!

  52. Many thanks for this, it works a treat!

    ~Cyrix

  53. Thank you so much for this

  54. I really needed ur help it’s 11:18 pm. My assignment is ude 2mrw

  55. Thanx alot man

  56. works like charm… million thanks

  57. perfect!

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

  59. Man..!! U r awesome..!! This works absolutely perfect. Thanks a lot..!!

  60. thanks man! your great! it almost cool me donw when I trying it to figure it out for almost 24 hours! hahaha….

  61. Wow, this was exactly what i needed, the 443 port for ssl had me stumped. THANKS!

  62. thanksssssssssssssssssssssssssssssssssss alot man

  63. hii people..

    here my story goes//
    currently my college’s web site is running n IIS kanchiuniv.ac.in
    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 site..so m using IIS redirecting option……..
    i hav changed apache port to 8080..but still m not able to access my wordpress site….plssss help..

  64. Pingback: Making XAMPP (Apache) work with IIS on Windows XP/Vista " Williamo’s Blog.

  65. 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.

  66. THANK YOU SO MUCH, I FINALLY GOT MY APACHE TO RUNN!!! THANK THANK YOU.

  67. Thank you so much! That saved me a LOT of time!

  68. Thanks. I got finally run apache in vista.

  69. 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

    • I’ll see what I can do by adding more tags to the post. Thanks for your comment!

  70. Finally, the XAMPP works, but I can connect to localhost:8080, I give up.

  71. 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 !

    • 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: http://www.apache-asp.org/faq.html

  72. Worked like a charm. Thanks a lot.

  73. Worked like a charm. Thankz!

  74. Thanks Man for your clear steps.

  75. 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

  76. IIS should i enable or not?if should enable what step to do?im follow ur guide,but still cant access my localhost page…
    xampp>htdocs>”myweb”
    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

  77. im using Apache and MySql as service.pls help me….

  78. vfret

  79. You guys are a blessing

  80. Finally, i found this article. i have a problem when running xampp in Vista. Great article, thanks

  81. Nice Trick , Help a lot to get two of them work together ;)

  82. Thank you VERY much for this explanation.
    Xammp ought to include this in their documentation!

  83. Henk Jan Verlinde

    Thanks a lot! Works like a charm.

  84. Thanks, your instructions worked. I was on the point of giving up on XAMPP.

  85. Awesome tut, succinct and valuable. Thank you

  86. Thanks buddy, It worked!!!

  87. This worked perfectly. Saved me a ton of time!!! Thanks.

  88. thanks :)

  89. Thanx a lot…. :)

  90. It works :) . Thanks man you just saved my life.

  91. Thx willwm u really saved me and made ma evening

  92. Thanks a lot. Helped me to avoid removing IIS

  93. Thanks. I had Teamviewer using port 80 also and it was causing me a headache.

    Problem solved.

  94. still not working… meh.. thanks anyway

    • Try this; it will help you determine which applications might be conflicting with port 80 or 8080 (or any other port, for that matter): http://winnetstat.zapto.org/

  95. Whoa! Fantastic, it works :)
    Thanks a lot! Cheers from Croatia! :) )

  96. 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.

  97. 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.

    • Looks like this *should* solve the issue: http://codex.wordpress.org/Changing_The_Site_URL

      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:
      http://www.microsoft.com/web/Downloads/platform.aspx

      Thanks for your comment!

      • Thanks very much, Williamo. The first link did the trick! :D

  98. i have try this but still error when i start my localhost\phpmyadmin

    thank for your help

    • Which error do you see?

  99. Thanks. It’s working now.

  100. you just saved me so much time! i was looking for this solution everywhere… thanks

  101. 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?

    Thanks

    • What happens if you try http://localhost:8080?

  102. 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.”

    thanks

  103. sorry I forgetted to tell which version I am using

    windows 7
    and xampp 1.7.3
    thanks again

  104. Great post! Got me up and running in minutes.

  105. 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…

  106. Thanks for sorting out my apache problem!!! It worked!!! :)

  107. Gaurang Daslania

    Thanks.. it works..!!!

  108. thanks dear it works… just like that…

  109. 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…

  110. 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
    localhost
    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..

  111. yeah!!! it’s worked. thanks alot.:)

  112. Pingback: Software Development Posts « Williamo's Blog

  113. THANKS !!!! I had spent a good 3 hours bashing my head against the wall with this problem !!

  114. 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

  115. 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

  116. 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?

  117. 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

  118. cool ! thanks

  119. Thank you very much! your the best!

  120. Pingback: Xampp (Apache) dengan IIS di Windows XP/Vista « thyspir

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

  122. I cannot go in my local host? please help…

  123. hello

  124. Perfect thanks!

  125. 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.

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

  127. 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.

  128. Hi Thx a lot for this article! It helps me one step further to install xamp on an lls server. (before i couldnt call http://localhost/phpmyadmin)

    But now i have the problem that everything is redirected to the xamp website.
    If I call http://localhost/index.php (a joomla installation)
    the browser redirects to http://localhost/xamp

    So if some has an idea i would be very thankfull

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>