I had 2 problems when installing XAMPP 1.7.4 on my most recently built computer (Windows 7 64bit Professional… they state 64 bit is not supported, though I suspect it installs in 32 bit compatibility mode just fine):
1: The pesky “XAMPP Component Status Check failure ” error. Although the solution was simple, I feel dirty for using it as it is clearly an issue that should be addressed in the installer rather than hacking the registry to make the error message go away: <Oliver Baty’s post>
I installed XAMPP (right-click -> Run as administrator) to D:\XAMPP because the documentation suggests to install XAMPP off a root drive (apparently they only mean C:\ however). Subsequently, as Oliver’s post states, I had to change the [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\xampp] -> Install_Dir registry setting from D:\xampp to C:\xampp. Adios error message!
The second issue was significantly harder to track down, so I thought I would post all the variations of the same issue that I came across in hopes that it saves the hours of your life wasted googleing as I have had to:
2: When in the XAMPP control panel, clicking Start for apache would provide the message “Apache started [Port 80]”, but apache would not really start. (This also originally showed itself as an error during install, stating “Ports 80 or 443 (SSL) already in use! Installing Apache2.2 service failed”)
The root cause was that Port 80 was being used by another process. To get a list of “listening” processes, you can run the following at the cmd line:
The important line in the output being:
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
This told me that PID 4 was hogging up port 80, which was not allowing Apache to use it. The resulting hours of searching and screaming told me that one of the following possible processes were using port 80 under the guise of PID 4, which is the “NT Kernel & System” System process.:
exhibit A: Under the services panel, find the service that has the description of “world wide web publishing service” and stop the service. If you found this service, you can check to see if port 80 is still being used by running the netstat command quoted above. If that doesn’t work, or you didn’t find it, go on to exhibit B.
exhibit B: Again, under services, search for “SQL server reporting services”, and if you find the service, stop it. Check to see if port 80 is still being used by running the netstat command quoted above. If that doesn’t work, or you didn’t find it, go on to exhibit C.
exhibit C: Again, under services, search for “Web Deployment Agent Service”(MsDepSvc). If you find the service, stop it. Check to see if port 80 is still being used by running the netstat command quoted above. If that doesn’t work… then it might not be the NT Kernel & System Process (The PID is usually 4 for this)
exhibit D: SKYPE! The PID could be any variety of numbers if Skype is the issue. I would suggest that you disable Disable Skype from starting when windows starts(in Skype this is under Tools->Options->General settings) After all, you are a developer, why would you need to speak to another human? 🙂 You can kick Skype off of port 80 simply by “Quitting” the application. Skype will still work and simply pick another port the next time you start it. You might want to set Apache to start as a service when windows starts so Skype doesn’t cause your Apache not to start the next time you forget to close it before you fire Apache up.
C solved it for me… until I restarted my machine and then D was the issue. Hopefully one of those variations solves it for you!
Please feel free to leave comments relating to this issue and I will update the post accordingly. Together we can save the lives of countless developers, one google search at a time.