XAMAPP Apache failed to start – Port 80 is busy in Windows 7 / Windows 8 - PID 4 running

XAMAPP Apache error–Port 80 is busy

This is one of the most popular problems. There are several common situations, and remedies.

Common Situation 1: Skype

You have Skype installed. You need to disable the following things to fix it.
Skype settings responsible for grabbing port 80

Common Situation 2: IIS

You are running IIS Server. There are two possible solutions. One is to turn off IIS server by opening IIS Server Manager, the other is to completely disable IIS server service in your computer.

Turned off IIS

Uncommon Situation 3: Unknown process using port 80

First of all, open cmd. You can do so by opening Run and then typing cmd, then pressing enter.
After opening cmd, type this

netstat -aon
It will give some output. Find out the line something like this. It will contain something that will look like :80. 
Found the culprit which stole port 80
Notice the PID (Process ID)? Now, open task manager by pressing Ctrl+Shift+Esc. Go to the process details and look for the PID you found out. In this case, its PID is 4.

And the PID leads to the process!
Now, this is a weird situation. As you can see, it is a system process. You should  not close a system process. Moreover, it’s description NT Kernel & System, meaning it is being used to run the process which is using port 80 and we don’t actually know which process is using it.

However, this is also solvable. After a bit of digging, I found that it is also a common scenario(!) to have NT Kernet & System grab port 80 for one particular service in both Windows 7 and Windows 8. 

Go to Run prompt again. Type services.msc and press enter. It will show the services. Find the service by the name Web Deployment Agent Service. You have to stop it (by right clicking, or by the left menu). And after stopping you should be able to run Apache in port 80 without any problem.
turn off the service!

What if Web Deployment Agent Service is not running?

Well – I am not sure what to do if it is a system process, and grabbed port 80, and is not Web Deployment Agent Service.

I didn't find the Web Deployment Agent Service. What should I do?

  1. Timur Bakarov mentioned that stopping the World Wide Web Publishing Service worked in that case. Thanks Timur!
  2. Sanden mentioned that  SQL reporting service might grab port 80, so you might want to look out for that as well.

I found the Process ID and it is not Skype, or IIS, or System!

Cool. Shut it down through task manager. (After you are sure that you have saved all things related to it and it is not an important process)

 

I do not want to stop the process which grabbed port 80. But I still want to run Apache!

Great. You will have to change the port of Apache then. You can change it by opening this file
ApacheDirectory/conf/httpd.conf
Then, find this line.
Listen 80
See that 80? That’s the port. Change it to another value, for example 8080. You will be able to start Apache after that. Remember to access it through browser using port. For example, if the address you want to access is localhost of Apache running in port 8080, you have to enter localhost:8080 in browser.

Comments

Popular posts from this blog

16 Design Tools for Prototyping and Wireframing

What is Functional and Non Functional Requirement

LESS CSS – Beginner’s Guide