Introducción al Error de Zona Horaria en Magento
Uno de los problemas más molestos a los que se enfrentan los administradores de tiendas e-commerce desarrolladas con Magento (Adobe Commerce) es la excepción relacionada con la clase DateTimeZone de PHP. El mensaje de error suele mostrarse como Notice: DateTimeZone::__construct(): Unknown or bad timezone o bloquear directamente la ejecución con una excepción no capturada. Este fallo impide que la plataforma cargue correctamente tanto el frontend como el panel de administración.
Causas Principales del Error DateTimeZone en Magento
Este inconveniente técnico en Magento suele estar provocado por una discrepancia entre la configuración de la zona horaria en el archivo php.ini del servidor, los valores almacenados en la base de datos de Magento (tabla core_config_data) o una versión de PHP incompatible con la base de datos de zonas horarias del sistema operativo.
Método 1: Corregir la Configuración en el Archivo php.ini
El primer paso y el más común para solucionar este error consiste en definir explícitamente una zona horaria válida reconocida por PHP en tu servidor.
- Accede a tu servidor mediante SSH o utiliza el administrador de archivos de tu hosting.
- Localiza el archivo
php.inicorrespondiente a la versión de PHP que está ejecutando tu instancia de Magento. - Busca la directiva
date.timezone. Si está comentada (con un punto y coma al inicio) o vacía, modifícala asignando una zona horaria estándar soportada, por ejemplo:date.timezone = 'UTC'odate.timezone = 'Europe/Madrid'. - Guarda los cambios y reinicia tu servidor web (Apache o Nginx) junto con el servicio PHP-FPM ejecutando:
sudo systemctl restart php-fpm.
Método 2: Actualizar la Zona Horaria Directamente en la Base de Datos
Si el problema persiste o no tienes acceso al archivo php.ini principal, es muy probable que la configuración interna de Magento esté apuntando a una zona corrupta o desactualizada.
- Accede a tu gestor de bases de datos (como phpMyAdmin) o utiliza la línea de comandos de MySQL.
- Ejecuta la siguiente consulta para identificar el valor actual configurado en Magento:
SELECT * FROM core_config_data WHERE path LIKE '%general/locale/timezone%'; - Actualiza el valor de la ruta por una zona horaria válida ejecutando el comando SQL:
UPDATE core_config_data SET value = 'UTC' WHERE path = 'general/locale/timezone'; - Limpia la caché de Magento ejecutando el siguiente comando en la raíz de tu proyecto mediante la terminal:
php bin/magento cache:flush.
Conclusión
Solucionar el error de zona horaria en Magento es fundamental para garantizar el correcto funcionamiento de las pasarelas de pago, los registros de logs y la visualización general de tu tienda online. Aplicando estos métodos podrás restaurar la estabilidad de tu plataforma e-commerce de forma rápida y segura.