Post actualizado el día octubre 29, 2026 by DeiviSanzPlay
XAMPP habilitar extensiones PHP suele resolverse con dos clics en el panel de control. Pero hay un escenario donde eso no funciona y el panel se queda mudo: la extensión aparece marcada, Apache se reinicia, y el módulo sigue sin cargarse. No es un fallo raro. Pasa más de lo que parece, y la causa casi nunca está donde uno la busca.
Me ocurrió con una instalación de XAMPP en Windows que llevaba meses funcionando sin tocar nada. Un día necesité la extensión intl para procesar fechas con locale en un proyecto. Marqué la casilla en el panel, reinicié, y phpinfo() seguía sin mostrarla. El error de PHP era claro: Class ‘IntlDateFormatter’ not found. El panel decía que estaba activa. La realidad decía otra cosa.
El detalle que cambia todo: XAMPP tiene más de un archivo php.ini y más de un binario de PHP. El panel de control edita el que cree correcto, pero Apache puede estar leyendo otro. Esto no es un fallo de diseño; es la consecuencia de tener PHP para el servidor web y PHP para la línea de comandos en rutas distintas.
Por qué el panel de XAMPP no siempre edita el archivo que Apache lee
En una instalación típica de XAMPP conviven al menos dos archivos de configuración: uno dentro de xampp/php/php.ini y otro en xampp/apache/bin/php.ini. El panel de control apunta al primero, pero Apache puede estar usando el segundo si la directiva PHPIniDir en httpd.conf apunta hacia otra carpeta. Si has movido XAMPP, si has instalado una versión nueva encima de la anterior o si has restaurado una copia de seguridad, es fácil que esa ruta quede desfasada.
La comprobación honesta es abrir un archivo con phpinfo() y buscar la línea Loaded Configuration File. Ahí aparece la ruta real que está usando el servidor. Si no coincide con la que edita el panel, habilitar extensiones PHP desde la interfaz es tiempo perdido.
Otro caso límite: trabajar con la versión CLI de PHP mientras Apache sigue con otra. Ejecutas php -m en la terminal, ves la extensión, y das por hecho que el navegador también la tiene. No necesariamente. Cada binario lee su propio php.ini, y XAMPP no siempre los mantiene sincronizados.
Extensiones que el panel no activa aunque marques la casilla
Hay módulos que dependen de librerías externas y no basta con descomentar la línea. oci8 necesita Oracle Instant Client instalado y la variable PATH apuntando a esa carpeta. imagick requiere ImageMagick y una DLL compilada para la versión exacta de PHP que tengas. Si la versión no coincide, PHP arranca pero ignora la extensión sin lanzar un error visible en el panel. Solo lo verás en el log de Apache o en un warning al iniciar.
Esto no funciona para extensiones que no vienen empaquetadas con XAMPP. El panel solo gestiona las que ya están en la carpeta ext. Si necesitas una que no está, tendrás que descargarla, colocarla y añadir la línea a mano en el php.ini correcto.
El truco de la ruta absoluta y el reinicio real
Cuando edito el php.ini a mano, uso la ruta absoluta en extension_dir. En lugar de extension_dir = «ext», escribo algo como extension_dir = «C:/xampp/php/ext». Las rutas relativas dependen del directorio de trabajo del proceso, y en Windows eso puede variar según cómo se lance Apache.
Después, el reinicio tiene que ser completo. Cerrar Apache desde el panel y volver a abrirlo no siempre libera el proceso en segundo plano. En Windows, si Apache se quedó colgado, hay que matar httpd.exe desde el administrador de tareas. En Linux o macOS, un sudo apachectl stop seguido de start es más fiable que el botón del panel.
Un detalle que casi nadie revisa: los archivos de configuración con extensión .ini pueden tener finales de línea mixtos si los has editado en distintos editores. PHP tolera eso casi siempre, pero no cuando la línea de la extensión queda partida. Un salto de línea invisible desactiva la directiva sin avisar.
Cuándo conviene abandonar el panel y usar la línea de comandos
Si trabajas con varias versiones de PHP en el mismo XAMPP, el panel se queda corto. Cambiar de versión implica editar httpd.conf, reiniciar y verificar. En ese escenario, habilitar extensiones PHP desde la interfaz es más lento que hacerlo con un script que edite el archivo correcto y reinicie el servicio.
La documentación oficial de PHP sobre php.ini y la guía de configuración de Apache son las fuentes que consulto cuando algo no cuadra. No hay atajos: si el archivo cargado no es el que editas, ninguna casilla marcará la diferencia.
El panel de XAMPP es cómodo para instalaciones limpias y recién hechas. Para todo lo demás, conviene saber leer phpinfo(), localizar el php.ini real y editar con cuidado. Esa es la diferencia entre creer que una extensión está activa y comprobarlo de verdad.
Perfiles verificables: Sitio web
Publicado el 29 de October de 2026. Última revisión: 29 de October de 2026.