Informática y Software Práctico

Solución Error XAMPP: Guía Práctica de Diagnóstico

Post actualizado el día octubre 24, 2026 by DeiviSanzPlay

XAMPP se ha convertido en el entorno de desarrollo local más utilizado para probar sitios en PHP y MySQL. Su instalación sencilla oculta, sin embargo, una realidad: cuando algo falla, los mensajes que muestra Apache o MySQL rara vez explican la causa real. Esta guía reúne los fallos más habituales y cómo resolverlos sin reinstalar todo desde cero.

Apache no arranca: el puerto 80 está ocupado

Es el problema más frecuente. Skype, IIS, algunos servicios de impresión o incluso otro servidor web pueden estar usando el puerto 80. Para confirmarlo en Windows, abre el símbolo del sistema como administrador y ejecuta netstat -ano | findstr :80. La última columna muestra el PID del proceso que lo ocupa. Si no lo necesitas, ciérralo desde el Administrador de tareas.

Si prefieres mantener ambos servicios, edita el archivo httpd.conf dentro de la carpeta xampp/apache/conf y cambia Listen 80 por Listen 8080. Haz lo mismo con ServerName localhost:8080. Después, accede a http://localhost:8080.

MySQL se detiene de inmediato

Cuando el panel de control muestra MySQL en rojo, revisa el archivo mysql_error.log en xampp/mysql/data. Las causas típicas son:

  • Puerto 3306 ocupado por otra instancia de MySQL o MariaDB. Cambia el puerto en my.ini y reinicia.
  • Archivos de datos corruptos tras un apagado brusco. Ejecuta mysqld –innodb-force-recovery=1 desde la consola para recuperar tablas InnoDB.
  • Permisos insuficientes en la carpeta data. En Windows, ejecuta XAMPP como administrador.

Error «Access denied for user ‘root’@’localhost’»

Ocurre cuando la contraseña de root cambió o se perdió. Detén MySQL, abre una consola en xampp/mysql/bin y lanza mysqld –skip-grant-tables. En otra ventana, entra con mysql -u root y ejecuta ALTER USER ‘root’@’localhost’ IDENTIFIED BY »; seguido de FLUSH PRIVILEGES;. Reinicia el servicio y vuelve a phpMyAdmin.

La página muestra código PHP en lugar de ejecutarlo

Si el navegador enseña el código fuente, Apache no está interpretando PHP. Comprueba que en httpd.conf exista la línea LoadModule php_module con la ruta correcta a php8.x.x/php8apache2_4.dll. También verifica que el bloque AddType application/x-httpd-php .php esté presente. Un error tipográfico en la ruta rompe toda la ejecución.

phpMyAdmin devuelve error 403 o 404

Revisa el alias en xampp/apache/conf/extra/httpd-xampp.conf. Debe apuntar a la carpeta real de phpMyAdmin. Si cambiaste la contraseña de root, actualiza config.inc.php con las credenciales nuevas; de lo contrario, verás un error de autenticación que parece un fallo del servidor.

Errores de extensiones: «PHP Startup: Unable to load dynamic library»

Al activar extension=gd o extension=zip en php.ini, la ruta debe coincidir con la carpeta ext. Comprueba que la línea extension_dir apunte a xampp/php/ext con barras correctas. Si la DLL no existe, la solución pasa por descargar la versión exacta de PHP o desactivar la extensión.

Consejos para prevenir futuros fallos

Detén Apache y MySQL desde el panel antes de apagar el equipo. Evita mover la carpeta xampp a otra ruta después de instalarla; si lo haces, actualiza las rutas en los archivos de configuración. Realiza copias periódicas de htdocs y de las bases de datos con mysqldump. Y cuando algo falle, consulta siempre los logs antes de tocar configuraciones: apache/logs/error.log, mysql/data/mysql_error.log y php/logs/php_error_log contienen la pista exacta.