392
votes

I've just re-installed XAMPP, and when I try to start my Apache server in the XAMPP Control Panel, I now get the following errors:

16:50:25  [Apache]     Status change detected: running
16:50:26  [Apache]     Status change detected: stopped
16:50:26  [Apache]     Error: Apache shutdown unexpectedly.
16:50:26  [Apache]     This may be due to a blocked port, missing dependencies,
16:50:26  [Apache]     improper privileges, a crash, or a shutdown by another method.
16:50:26  [Apache]     Press the Logs button to view error logs and check
16:50:26  [Apache]     the Windows Event Viewer for more clues
16:50:26  [Apache]     If you need more help, copy and post this
16:50:26  [Apache]     entire log window on the forums

How do I solve this?

30
I started having this problem after installing a new version of XAMPP. I thought the problem was about ports, since almost every post talks about them, but it wasn't. When I checked the error.log, I saw PHP Warning: 'vcruntime140.dll' 14.0 is not compatible with this PHP build which led me to this answer. Installing the required redistributable solved the problem.akinuri

30 Answers

436
votes

Open Skype.

Tools -> Options -> Advanced -> Connection.

Uncheck the "Use port 80 and 443 for alternatives for incoming connections" checkbox

Sign Out and Close all Skype windows. Try restarting your Apache.

864
votes

As I am working in a corporate environment where developers faces firewall issues, none of the other answers resolved my issue.

As the port is not used by Skype, but by some other internal applications, I followed the below steps to resolve the issue:

Step 1 - From the XAMPP Control Panel, under Apache, click the Config button, and select the Apache (httpd.conf).

Inside the httpd.conf file, somehow I found a line that says:

Listen 80

And change the 80 into any number / port you want. In my scenario I’m using port 8080.

Listen 8080

Still from the httpd.conf file, I found another line that says:

ServerName localhost:80

Change 80 to 8080.

ServerName localhost:8080

Step 2 - From the XAMPP Control Panel, under Apache, click the Config button again, but this time select the Apache (httpd-ssl.conf). Inside the httpd-ssl.conf file, find line that says

Listen 443

And change the 443 into any number / port you want. I’ll using 4433 as the new port number.

Listen 4433

Still from the httpd-ssl.conf file, find another line that says

<VirtualHost _default_:443>

ServerName localhost:443

And change 443 to 4433.

<VirtualHost _default_:4433>

ServerName localhost:4433

Remember to save the httpd.conf and httpd-ssl.conf files after performing some changes. Then restart the Apache service.

119
votes

In XAMPP Control Panel V3.2.1, click on "NetStat" button on top right. Make sure port 80 is not used by any other program. Then click on "Shell" Right below it. Issue this command "Type ap then TAB two times"

Apache_Start.bat

You will actually see the exact error why Apache failed. It will be mostly likely virtual host configuration issue or may be something else. It will display the line number on which the error is occurring. Just fix that error. Note that in RootDocument a trailing \ can be a source of error as well. Remove any trailing "\".

107
votes

One thing you can do is to stop the services on port 80 by issuing

net stop http

in a cmd. You'll be asked if you're sure you want to stop those services. I found out that I had a few services I wasn't using and disabled them.

To see who else is using port 80 type in a cmd

netstat -abno

I'm assuming you want to run Apache on port 80. If this is the case and you want to keep the conflicting services you will need to associate them to a new port.

If the problem is not a busy port you can also try the following: select "show debug information" in the XAMPP config panel. When starting Apache you'll be shown something like "Executing "c:\xampp\apache\bin\httpd.exe". If you run that

c:\xampp\apache\bin\httpd.exe

in a cmd you will get some more information (I once for instance had some issue with my httpd.conf file).

Related: How do I free my port 80 on localhost Windows? and Apache won't run in xampp

42
votes

Follow these steps:

  1. Open your XAMPP control panel then click its "Config"
  2. Choose the "Apache (httpd.conf)" and find this code below and change it into this one:

    #Change this to Listen on specific IP addresses as shown below

    #to prevent Apache from glomming onto all bound IP addresses.

    #Listen 0.0.0.0:80

    #Listen [::]:80

    Listen 80

    # Dynamic Shared Object (DSO) Support

    1. Save it (Ctrl + S)
    2. After that, go back to the XAMPP control panel and click its config again.
    3. Choose "Apache (httpd-ssl.conf)", find this code below, and change it again:

    # Note: Configurations that use IPv6 but not IPv4-mapped addresses need two

    # Listen directives: "Listen [::]:443" and "Listen 0.0.0.0:443"

    #

    #Listen 0.0.0.0:443

    #Listen [::]:443

    Listen 443

    1. Save it (Ctrl + S)
    2. Then, click the "config" (note: above the netstat) and click the "service and port settings".
    3. Change "Main Port" to 8080 and "SSL Port" to 4433, then save it.
    4. Finally, go to the "control panel" -> "Programs & Features" -> "Turn Windows On or Off".
    5. Uncheck your "Internet Information Services", and then click OK.

Just wait for it and your computer/laptop will be automatically restart and try to open your XAMPP control panel again, and then start your Apache.

30
votes

My problem was that in httpd.conf the DocumentRoot and <Directory> entries were pointing to non-existing folders.

For example, the 'original' httpd.conf had the following entries:

DocumentRoot "c:/Apache24/htdocs"
<Directory "c:/Apache24/htdocs">

If you've installed in C:\xampp then you need to change those entries to match, i.e.

DocumentRoot "c:/xampp/htdocs"
<Directory "c:/xampp/htdocs">
23
votes

If you're using Windows 7 . Search for IIS in Windows search (Click the Window icon in left bottom and type in where it says 'Search program and files') .

Open IIS (Internet Information Service) .

In the right side in actions panel. Click Stop.

Note: The stop link is faded in screen shot. As I've stopped it. IIS Screenshot Problem Solved!

23
votes

This worked for me...

If you are using windows...

Search 'cmd' in the windows search bar.

Enter this:C:\xampp\apache\bin\httpd.exe

Find which file and which line the error occurred.

For example, mine was in the file below on line 37.

httpd-multilang-errordoc.conf

Open the code and fix the error by either removing the line or fixing it.

Done! I should work now.

:)

22
votes

I had the same issue, and it turns out I forgot to run setup_xampp.bat (portable version).

15
votes

It seems that no one has answered about executing xampp_start.exe.

I did all the previous answers but it did not fixed my issue. I found out that running xampp_start.exe will give you a detailed info about the issue.

This is what I see on my end:

xampp_start

As you can see I was having a path issue or xampp is pointing to non-existing folder.

12
votes

The simple thing that you can do is to check if Skype or VMware is installed in your machine or not.

Skype uses port 80 and 443 as an additional port for incoming connections. To change the port number in Skype, go to

Tools > Connection Options > Connection

in the Skype window. Now change the default 80 port number to something other.

VMware Workstation uses port 443 for sharing. To change this, open VMware Workstation and goto

Edit > Preferences > Shared Vms

  1. Click "Change Settings" buton
  2. Then Click "Disable Sharing"
  3. Then change the https port number being used (443)
  4. Then you can click "Enable Sharing" button

That's all you have to do. Restart XAMPP and run the Apache server.

11
votes

When I found that there was no process using port 80 by using commands

netstat -abno | find ":80"

there was not a problem of any process using port 80.

Then I ran command (in cmd)

C:\xampp\apache\bin\httpd.exe

it showed some error in the virtual hosts configuration in httpd-vhosts.conf file which was recently edited by me for installation in a WordPress PHP environment in the Eclipse IDE. So I deleted those lines and Apache started perfectly.

9
votes

I had the same problem sometime back. I had a old laptop, on which almost all the ports were either blocked or were malfunctioning. This is how I did it.

  1. Open the XAMPP control panel.

  2. Click on Config

  3. Then, go into Apache httpd.conf file. Open it with a text editor.

  4. Search for "80" (Do Ctrl + F and find all of them. Replace it with 8080 or 4040 or 4000).

  5. Save the file. And restart XAMPP.

It worked well for me, and I hope it helps you too.

7
votes

For me, world wide web publishing-service was using port 80. I killed this by running the following command on cmd:

net stop http

After that, XAMPP ran Apache without any problems.

6
votes

This error occurs because the port, which is allocated for Apache, is used by another program. To check the application which uses the port, which we allocated for Apache, it can be had by clicking,

Netstat button.

XAMPP homepage

This is the Netstat file,

Enter the image description here

At first, I have allocated port 8080 for Apache, and I recently installed Oracle DB.TNSLSNR.exe has used 8080 port now.

So, by looking at this file we can choose a port which is not clashing with other applications. In my case, port 8060 is not clashing with any application. By selecting that we can change the httpd.conf file (XAMPP control panel -> Config) as mentioned above.

5
votes
  1. download new xampp apachefriends
  2. install it
  3. remove all VPN app
  4. open folder XAMPP run setup_xampp.bat
  5. run xampp-control.exe
4
votes

One of the causes could be that you are not running the XAMPP Control Panel as an administrator.

4
votes

In my case, this issue was caused by an attempt to download other product of bitnami, like WordPress. That's common when we install WordPress via XAMPP. It is placed in the xampp/app directory that can be accessed from the XAMPP application homepage.

As a solution, I removed the default installed WordPress from the xampp directory and manually installed WordPress in the htdocs folder of WordPress by downloading it and extracting zip files into the htdoc folder. You also need to restart XAMPP or may system after uninstalling/removing the default WordPress. All is OK for me now.

4
votes
  1. Make at first sure your \xampp folder is in the root! This is important as the path is relative.

  2. Then make sure you run the xampp_control.exe with admin rights.

  3. Then change the files below to avoid issues with blocked port 80.

In \xampp\xampp-control.ini it should be set:

[ServicePorts]
Apache=8080
ApacheSSL=4433

Find \xampp\apache\conf\httpd.conf and set:

Listen 8080

ServerName localhost:8080

Find \xampp\apache\conf\extra\httpd-ssl.conf and set:

Listen 4433

<VirtualHost _default_:4433>

ServerName www.example.com:4433

Then end all services and restart xampp-control.exe with admin rights. It should run!

4
votes

I have just encountered this error on my xampp v3.2.2 [win 10 pro x64],

I first tried to run the "net stop http" command in an admin cmd, but it didnt solve the issue, so I went ahead to try the "netstat -abno" command and i found out that the ssl port(443) was in use by vmware.

so my advice, don't just look for what's blocking port 80, also look for potential programs using port 443. because I really don't like changing my default port numbers to 8081 and 4433.

So this is how you can solve this issue...

firstly type the following command

net stop http

then try to start apache, if it still doesn't work. type out the following command

netstat -abno

and you'll definitely get that troublesome app that's using up your precious port.

copy the pid and then use the following command

taskkill /f /pid PID

where PID is the pid you copied.

Hopefully this helps someone.

4
votes

You can run apache_start.bat file from XAMPP directory for see details about your error details.

2
votes

This happend due to default port 80 is blocked for Apache. You need to change the port or make the port accesible.

Go to your Apache configuration (httpd.conf) file in the Apache installation.

Find these lines:

#

Listen 192.168.1.2:80

Listen 80

#

Here 192.168.1.2 is my private IP address. Change it according to yours.

Change as below

Listen 192.168.1.2:8081

Listen 8081

Now when you access localhost you have to add the port explicitily as http://localhost:8081/...

2
votes

I solved the problem with stopping the service "Web Deployment Agent Service". Open: System -> Computer Management -> Services -> Web Deployment Agent Service. Stop this service and starting XAMPP works. I think this is a service by MS Webmatrix.

(German: Systemsteuerung -> System und Sicherheit -> Verwaltung -> Dienste -> Webbereitstellungs-Agent-Dienst)

2
votes

Best solution

open XAMPP control panel,click on config for Apache, then click on Apache(httpd.config).now in the text editor . ctrl+f --> find "Listen 80" and replace it with "Listen 8079" wtihout the quotations :) but now you have to use it like this http://localhost:8079/

P.S, I tried to change port settings for skype , stopping the Web Deployment Agent Service which I could not find in windows 10,cmd--> net stop http, and other methods but nothing worked except this .

2
votes

I had the exact same error message as the OP, but my problem was not addressed by any of the existing answers. Many of the answers deal with conflicts on port 80, which I knew I did not have, since I had had localhost responding on port 80 very recently.

Turns out I had inadvertently changed ServerRoot when I intended to change DocumentRoot (stupid, I know), and though the new ServerRoot directory existed, it did not contain the configuration files and other stuff apache needed, which caused it to fail on startup. The error message probably addresses this scenario by the wording 'missing dependencies'.

On my Windows system, setting ServerRoot back to C:/XAMPP/apache solved the problem.

2
votes

The Apache server by default runs on ports 80, 443. Your problem is one or both of the two ports are busy. Usually Skype or VMware Workstation use these two ports. So, make sure that they're not running. The best way to make sure the ports are free on windows is :

  • Click windows button.

  • In the search bar type resmon, to open the resource monitor resmon.exe.

  • Open Listening Ports, this will show you the opened used ports.

  • Now you can see which process is using ports 80 and 443.

  • Then you can kill the process either from CMD using its PID (which is shown in the resource monitor), or directly from Task Manager.

  • To kill a process from CMD using PID type Taskkill /PID 26356 /F, where 26356 is the PID.

2
votes

Best Solution for windows user is :

  1. Open netstat (from XAMPP CONTROL PANEL)
  2. Find PID of process which uses port 80.
  3. Open CMD with Administrative.
  4. Run taskkill /pid PID (instead PID use pid u found from netstat)
    Heyy enjoy u Done.....
2
votes

Alright, no port 80, no Skype blame! My problem was indeed quite simple(&silly), I had an extra backslash (\) (on Windows) after the path I'd specified for the DocumentRoot directive, so I made a change like this and the problem is gone like a duck soup.

My index.php was in the path "D:\websites\dummy" and my httpd.conf was like this:

<VirtualHost 127.0.0.2:80>
ServerName dummy.local
DocumentRoot "D:\websites\dummy\" #mistake here
</VirtualHost>
<Directory "D:\websites\dummy\"> #mistake here
    Require all granted
</Directory>

So just change those two lines like this:

#first mistake fix:
DocumentRoot "D:\websites\dummy"
#second (similar) mistake fix:
<Directory "D:\websites\dummy">

...and everything's fine now. To prevent such mistakes in future, always copy the path of any folder you want to refer to instead of typing it yourself.

2
votes

In my case port was already used by windows IIS service. You can check if port is being already used from cmd. Open cmd and run this command:

netstat -ano

If it is being used by IIS you can stop it by following command. Open cmd as administrator, then:

iisreset /stop

Now try running XAMPP, it should work.

2
votes

Try the following, none of the above solved it for me

Select "Run as administrator"

enter image description here

Then click on the big left box next to Apache

And Choose to uninstall Apache

enter image description here

I have no idea why this worked but it solved my problem directly!