Adrian Cabeza

0 %
Adrian Cabeza
Paraty Tech
Software Engineer
Software Architect
Español
Ingles
HTML/ CSS3/ Javascript
Python
jQuery / SASS
Google Appengine / AWS
Jenkins
Google Analytics
React
Flutter
  • GIT
  • Sass, Less
  • Webpack
  • Django / Flask / Jinja2
  • RabbitMQ
  • PostrgreSQL / MongoDB
  • REST
  • Google Tag Manager
  • Administración de Sistemas
  • Administración de Redes

Prestashop – La extensión intl no está cargada

29 de septiembre de 2023

Cuando realizamos instalaciones de Prestashop en servidores nuevos, en ciertas ocasiones nos podemos encontrar con problemas de instalación como el siguiente

PrestaShop – “La extensión intl no está cargada”: cómo solucionarlo de forma correcta (PHP 7/8, Apache, Nginx, FPM, Docker y Windows)

Al instalar PrestaShop, a veces aparece el error “La extensión intl no está cargada”. Esta extensión (PHP Intl) es necesaria para internacionalización (formatos de fecha/número, NumberFormatter, ordenaciones locales, etc.). A continuación tienes la guía completa y comprobada para resolverlo en distintos entornos.

1) Verifica primero si intl está cargada

php -m | grep intl
php -i | grep -i "intl"

Si usas servidor web, crea temporalmente un info.php con <?php phpinfo(); y ábrelo en el navegador para comprobar si intl aparece en la SAPi que realmente atiende tu web.

Importante: el resultado de la CLI puede ser diferente del servidor web (mod_php / php-fpm). Asegúrate de comprobar la misma SAPi que usa tu sitio.

2) Debian/Ubuntu

2.1 Apache (mod_php)

sudo apt update
# Instala el paquete de tu versión (ejemplos):
sudo apt install php-intl           # usa la versión por defecto del sistema
# o específicos:
sudo apt install php8.2-intl        # para PHP 8.2
sudo apt install php8.1-intl        # para PHP 8.1

# Habilita el módulo si procede y reinicia Apache:
sudo phpenmod intl
sudo systemctl restart apache2

Alternativa manual: edita /etc/php/<version>/apache2/php.ini, busca ;extension=intl y descomenta (deja extension=intl). Reinicia Apache.

2.2 Nginx + PHP-FPM

sudo apt update
sudo apt install php-intl            # o php8.2-intl / php8.1-intl
sudo phpenmod intl

# Recarga FPM y Nginx (ajusta la versión del pool FPM):
sudo systemctl reload php8.2-fpm
sudo systemctl reload nginx

Alternativa manual: edita /etc/php/<version>/fpm/php.ini y/o un conf.d (por ejemplo /etc/php/<version>/mods-available/intl.ini) para asegurar extension=intl. Luego recarga FPM y Nginx.

3) Rutas y SAPIs habituales

  • /etc/php/<version>/apache2/php.ini → Apache (mod_php)
  • /etc/php/<version>/fpm/php.ini → PHP-FPM
  • /etc/php/<version>/cli/php.ini → CLI

Comprueba en phpinfo() la línea Loaded Configuration File para editar el php.ini correcto.

4) Docker (Debian/Ubuntu base)

En imágenes oficiales basadas en Debian/Ubuntu:

RUN apt-get update \
 && apt-get install -y --no-install-recommends php-intl \
 && rm -rf /var/lib/apt/lists/*

Recuerda habilitar la extensión si tu imagen lo requiere (a menudo basta con instalar el paquete). Reinicia el servicio PHP del contenedor o recontruye la imagen.

5) Docker (Alpine)

En Alpine, las librerías ICU y el paquete cambian:

# PHP 8.2 como ejemplo:
RUN apk add --no-cache icu-data-full icu-libs php82-intl

Si usas variantes con docker-php-ext-install (imágenes PHP oficiales con herramientas de build), puedes compilar:

RUN apk add --no-cache $PHPIZE_DEPS icu-dev \
 && docker-php-ext-install intl \
 && apk del $PHPIZE_DEPS

6) Windows (XAMPP/WAMP)

  1. Edita php.ini y descomenta extension=intl.
  2. Asegúrate de que los icu*.dll están disponibles (normalmente vienen con la distribución PHP).
  3. Reinicia Apache o PHP-FPM en Windows.

7) cPanel / Plesk

En muchos hostings compartidos podrás activar intl desde el selector de extensiones de PHP del panel (Seleccionar PHP → Extensiones → marca intl → Guardar). Después, limpia cachés de opcode si aplica.

8) Problemas frecuentes

  • Múltiples versiones de PHP instaladas: has habilitado intl en la versión equivocada. Comprueba phpinfo() en web.
  • Editas el php.ini equivocado: revisa Loaded Configuration File en phpinfo().
  • Falta reinicio/recarga del servicio: Apache necesita restart; FPM/Nginx, reload.
  • Alpine: faltan paquetes ICU; instala icu-libs o icu-dev según corresponda.

9) Resumen de comandos rápidos

# Debian/Ubuntu - Apache
sudo apt install php-intl && sudo phpenmod intl && sudo systemctl restart apache2

# Debian/Ubuntu - Nginx + FPM (ajusta versión)
sudo apt install php8.2-intl && sudo phpenmod intl \
&& sudo systemctl reload php8.2-fpm && sudo systemctl reload nginx

# Verificar
php -m | grep intl

10) ¿Sigue fallando?

Comprueba el log de errores de PHP/servidor y pega el resultado de:

php -i | grep -Ei 'intl|icu|Configuration File'

Con esa salida se puede diagnosticar rápidamente conflicto de versiones o librerías ICU.

Posted in Sin categoría
Write a comment