¿Problemas con XAMPP y el puerto 80?

¿A quién no le ha pasado que después de instalar el XAMPP ha intentado iniciar el Apache y no le ha funcionado?

Xampp_01a

Error del Apache porque se está usando el puerto 80

Este problema se suele dar porque ya hay algún servicio que está usando el puerto 80, que es el que usa el Apache por defecto, lo cual hace que se produzca un error y que el Apache sea incapaz de arrancar.

Aquí tienes algunas soluciones para evitar este problema.

1.- Cambiar el puerto 80

El protocolo HTTP, por omisión escucha por el puerto 80. El Apache usa también este puerto de escucha si no se le indica otro, por eso, cuando deseamos acceder a una página web no será necesario indicar el puerto, ya que por omisión el servidor recibirá las peticiones por el puerto 80. Por ejemplo, si en la máquina local tenemos un Apache en marcha, cuando escribamos en el navegador:

http://localhost

Se mostrará la página inicial del servidor, no hará falta poner el puerto:

http://localhost:80

Una de las soluciones al problema con el Apache y el puerto 80 es la de cambiar este puerto y utilizar otro, por ejemplo el 81. En XAMPP es fácil acceder al fichero de configuración de Apache:

  • Pulsamos en el botón Config del Apache
  • Seleccionamos el fichero httpd.conf
  • Buscamos la línea que pone Listen 80
  • Modificamos el puerto poniendo otro, por ejemplo Listen 81
  • Guardamos los cambios

Iniciamos de nuevo el Apache y ya no debería dar errores de conflicto. El problema de esta solución es que en la URL hay que indicar siempre el puerto, ya que no es el que se usa por omisión:

http://localhost:81

2.- Detener los servicios que usen el puerto 80

La solución que hemos tomado en los laboratorios de la Escuela Politécnica de Alicante, ha sido la de detener los servicios que usan el puerto 80.

Los laboratorios instalados con Windows 7 llevan activado el IIS7 (Internet Information Services), lo que suele dar conflictos con el Apache, ya que los dos usan el puerto 80. Lo que hacemos es detener este servicio y arrancarlo de nuevo cuando finaliza el XAMPP.

Otro servicio que también puede dar problemas en los laboratorios de la Escuela es MSSQLSERVER, por lo que también habrá que detenerlo.

A continuación se muestra una lista de los servicios candidatos a dar este tipo de problemas:

  • w3svc Servicio de publicación World Wide Web.
  • iisadmin Servicio de administración IIS.
  • reportserver SQL Server Reporting Services (MSSQULSERVER).
  • was Servicio WAS (Windows Process Activation Service).
  • peerdistsvc Servicio de Branch Cache.

Podemos detener estos servicios desde una terminal de MS-DOS, pero accediendo como Administrador, sino aparecerá el mensaje de “Acceso denegado”. Para abrir la consola como Administrador seguimos estos pasos:

  • Pulsamos en el botón de “Inicio”  de Windows.
  • En el cuadro de texto “Buscar programas y archivos” escribimos cmd
  • Encontrará el archivo cmd.exe
  • Pulsamos sobre él con el botón derecho del ratón.
  • Pulsamos sobre la opción “Ejecutar como Administrador”
  • Permitimos que se ejecute el programa y se abre una consola de MS-DOS.

Para iniciar y detener los servicios disponemos del siguiente comando:

NET [START|STOP] <servicio>

Con la opción START iniciamos el servicio y con STOP lo detenemos.

Probamos qué servicios son los que nos están dando problemas y los detenemos, por ejemplo:

NET STOP W3SVC
NET STOP IISADMIN

Cuando ya no haya conflictos, si abrimos el XAMPP e iniciamos el Apache, éste debería arrancar sin problemas.

Error de Apache

Fichero BAT

Para evitarnos el tener que estar parando y arrancando servicios cada vez que queremos usar el XAMPP, podemos crear un fichero BAT que haga estas acciones de forma automática.
A continuación tienes un ejemplo de fichero BAT:

@ECHO OFF
ECHO -------------------------------------
ECHO XAMPP PARA LOS LABORATORIOS DE LA EPS
ECHO -------------------------------------
ECHO.
ECHO * Deteniendo servicios que usan el puerto 80, espere...
ECHO.
net stop iisadmin
net stop w3svc
net stop was
net stop reportserver
net stop peerdistsvc
ECHO.
ECHO * Los servicios se arrancar n de nuevo cuando cierre el Panel de Control
ECHO.  de XAMPP desde el bot¢n 'Quit'.
ECHO.
ECHO =====================================
ECHO.   ATENCION NO CIERRE ESTA VENTANA
ECHO =====================================       
ECHO.
ECHO Lanzando el Panel de Control de XAMPP, compruebe que no est‚ minimizado.

C:\xampp\xampp-control.exe

ECHO.
ECHO * Arrancando los servicios que se hab¡an detenido.
ECHO.
net start iisadmin
net start w3svc
net start was
net start reportserver
net start peerdistsvc

El problema que nos surge ahora es que necesitamos lanzar el BAT como Administrador. Una solución puede ser la siguiente:

  • Creamos un acceso directo, por ejemplo en el Escritorio.
  • Como destino le ponemos nuestro BAT: C:\xampp\xampp.bat
  • Podemos usar el icono que hay en C:\xampp\install\xampp.ico
  • Pulsamos con el botón derecho sobre el acceso directo que hemos creado y pulsamos sobre la opción Propiedades.
  • En la pestaña Acceso directo pulsamos sobre el botón Opciones avanzadas…
  • En la ventana que se abre, marcamos la casilla Ejecutar como administrador.
  • Aceptamos todo.

Xampp_03a

Si todo va bien, al pulsar sobre el nuevo enlace directo, nos pedirá permiso para ejecutar el BAT, cuando aceptemos se detendrán los servicios, se abrirá el Panel de Control del XAMPP y podremos iniciar el Apache sin problemas. Cuando pulsemos el botón Quit del Panel de Control del XAMPP, el BAT continuará y arrancará de nuevo los servicios que había detenido.

Deja un comentario