Skip to content

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

by willwm on July 30, 2008

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

From → Fascinations

118 Comments
  1. christian permalink

    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. PBranch permalink

    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. PBranch permalink

    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. Walt Hodges permalink

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

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

  16. AkAi permalink

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

    saved my neck…. :)

  17. AkAi permalink

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

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

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

  20. Reuben permalink

    This is Completely Working fine for me … thanks a tone

  21. paul permalink

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

    thanks

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

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

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

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

    Does this tell us anything?

  26. netbios-ssn was meant to read open btw

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

  28. Ankamsarav permalink

    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.

  29. Piet permalink

    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?

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

  31. mike d permalink

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

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

  33. Gatot permalink

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

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

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

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

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

  38. Brian Smith permalink

    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

  39. Andres permalink

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

  40. Ryan permalink

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

  41. cheers!

    this saved me big time.

  42. Corrine permalink

    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?

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

  44. Bas permalink

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

    Bas
    India

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

  46. goldeneyes permalink

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

  47. Nikolay permalink

    Thanks!!! Very helpful!

  48. Yolanda permalink

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

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

    ~Cyrix

  50. manu permalink

    Thank you so much for this

  51. medie permalink

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

  52. medie permalink

    Thanx alot man

  53. helmi permalink

    works like charm… million thanks

  54. rogy permalink

    perfect!

  55. rogy permalink

    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

  56. Abhishek permalink

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

  57. mahan permalink

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

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

  59. wiz permalink

    thanksssssssssssssssssssssssssssssssssss alot man

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

  61. Pur2103 permalink

    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.

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

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

  64. Fatih permalink

    Thanks. I got finally run apache in vista.

  65. Léa permalink

    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!

  66. Léa permalink

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

  67. Catherine Li permalink

    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

  68. Shadow permalink

    Worked like a charm. Thanks a lot.

  69. Worked like a charm. Thankz!

  70. raj kumar permalink

    Thanks Man for your clear steps.

  71. russhimi permalink

    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

  72. shimi permalink

    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

  73. shimi permalink

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

  74. tomp permalink

    vfret

  75. Elkana permalink

    You guys are a blessing

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

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

  78. Andre permalink

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

  79. Henk Jan Verlinde permalink

    Thanks a lot! Works like a charm.

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

  81. Voopa permalink

    Awesome tut, succinct and valuable. Thank you

  82. Vinay permalink

    Thanks buddy, It worked!!!

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

  84. Rakesh permalink

    thanks :)

  85. Arnab permalink

    Thanx a lot…. :)

  86. Yusuf permalink

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

  87. Sanya permalink

    Thx willwm u really saved me and made ma evening

  88. Karthikeyan permalink

    Thanks a lot. Helped me to avoid removing IIS

  89. Bruno permalink

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

    Problem solved.

  90. Ghost permalink

    still not working… meh.. thanks anyway

  91. Josip permalink

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

  92. Shashank Gupta permalink

    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.

  93. Niña permalink

    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.

  94. Fula permalink

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

    thank for your help

  95. verz permalink

    Thanks. It’s working now.

  96. Tmax permalink

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

  97. flavio permalink

    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

  98. lazut permalink

    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

  99. lazut permalink

    sorry I forgetted to tell which version I am using

    windows 7
    and xampp 1.7.3
    thanks again

  100. Brantley permalink

    Great post! Got me up and running in minutes.

  101. schneida permalink

    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…

  102. Tes permalink

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

  103. Gaurang Daslania permalink

    Thanks.. it works..!!!

  104. thanks dear it works… just like that…

  105. vaishu permalink

    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…

  106. aizamia permalink

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

  107. phucnth permalink

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

Trackbacks & Pingbacks

  1. WorldCoder » Blog Archive » Configure Apache work with IIS on Windows XP/Vista (XAMPP)
  2. اجرای XAMPP کنار IIS در ویندوز | عصرونه - Asroone
  3. Making XAMPP (Apache) work with IIS on Windows XP/Vista " Williamo’s Blog.

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS