Cómo cambiar la zona horaria (timezone) en DirectAdmin y PHP
¿Por qué es importante tener la zona horaria correcta en tu servidor?
Cuando contratas un hosting, el servidor puede estar ubicado en cualquier parte del mundo. Por defecto, la hora del sistema y la de PHP suelen estar configuradas en la zona horaria del centro de datos (normalmente UTC o la hora local del país donde está el servidor). Esto puede causar problemas muy comunes, como que los comentarios de tu blog aparezcan con una hora incorrecta, que los correos electrónicos se envíen con una marca de tiempo equivocada, o que las tareas programadas (cron jobs) se ejecuten a horas que no esperabas.
Cambiar la zona horaria en DirectAdmin es un proceso sencillo si sabes dónde mirar. En esta guía te explico paso a paso cómo hacerlo, tanto a nivel de servidor (DirectAdmin) como a nivel de PHP (php.ini). Al final, tendrás tu web mostrando la hora exacta de tu país.
Cambiar la zona horaria en DirectAdmin (hora del sistema)
DirectAdmin tiene una interfaz de administración que te permite controlar casi todos los aspectos de tu servidor. La hora del sistema es una de ellas. Si tienes acceso al panel de administración principal (no el de usuario), puedes cambiarla fácilmente.
Acceso al panel de administración de DirectAdmin
Para empezar, necesitas acceder a DirectAdmin como administrador. La URL suele ser https://tu-dominio.com:2222 o https://tu-ip:2222. Usa las credenciales de administrador (usuario admin).
Una vez dentro, busca la sección "System Setup" o "Configuración del Sistema". Dependiendo de la versión de DirectAdmin, el nombre puede variar ligeramente, pero generalmente encontrarás una opción llamada "Server Settings" o "Configuración del Servidor".
Pasos para cambiar la zona horaria del sistema
- Dentro de "Server Settings", busca la pestaña o enlace llamado "Time" o "Hora".
- Verás un menú desplegable con todas las zonas horarias disponibles. Selecciona la que corresponda a tu país. Por ejemplo, si estás en México, puedes elegir
America/Mexico_City; si estás en España,Europe/Madrid. - Haz clic en el botón "Save" o "Guardar".
[INFO] Al cambiar la zona horaria aquí, lo que estás modificando es la hora del sistema operativo del servidor. Esto afecta a los logs del servidor, a los cron jobs del sistema y a cualquier script que use la función date() de PHP si no se especifica otra cosa.
Verificar el cambio de hora en el sistema
Para asegurarte de que el cambio se ha aplicado correctamente, puedes ejecutar el comando date en la terminal (si tienes acceso SSH). Otra opción más fácil es crear un archivo PHP temporal con el siguiente contenido:
<?php
echo date('Y-m-d H:i:s');
?>
Súbelo a tu carpeta pública (public_html) y ábrelo en el navegador. Si la hora mostrada es la correcta, el cambio se ha realizado bien.
Cambiar la zona horaria en PHP (php.ini)
Ahora viene la parte más importante para la mayoría de los usuarios: la configuración de PHP. Aunque hayas cambiado la hora del sistema, PHP tiene su propia configuración independiente en el archivo php.ini. Si no lo modificas, PHP seguirá usando la zona horaria que tenga definida por defecto.
Localizar el archivo php.ini en DirectAdmin
En DirectAdmin, cada usuario tiene la capacidad de sobrescribir la configuración de PHP a nivel de cuenta. Hay dos formas principales de hacerlo:
- Desde el panel de usuario de DirectAdmin: Entra como usuario normal (el que gestiona tu web). Busca la sección "Extra Features" o "Características Extra" y haz clic en "PHP Settings" o "Configuración PHP". Aquí puedes cambiar la zona horaria sin tocar archivos, de forma gráfica.
- Editando el archivo
php.inidirectamente: Si prefieres hacerlo manualmente, puedes acceder a tuphp.inimediante el administrador de archivos de DirectAdmin o por FTP. La ruta suele ser algo como/usr/local/lib/php.ini(a nivel de servidor) o~/php.ini(a nivel de usuario).
Modificar la directiva date.timezone
Independientemente del método que elijas, el objetivo es encontrar la línea que dice date.timezone. Es muy probable que esté comentada (con un ; al principio) o que tenga un valor como UTC.
Debes cambiarla (o descomentarla) y asignarle tu zona horaria. Por ejemplo:
date.timezone = "Europe/Madrid"
[WARNING] Es muy importante que la zona horaria esté entre comillas dobles. Si no lo está, PHP no la reconocerá y seguirá usando la hora por defecto.
Activar el cambio sin reiniciar el servidor
Una de las ventajas de PHP es que, si usas mod_php o PHP-FPM, los cambios en php.ini a nivel de usuario se aplican casi de inmediato. Sin embargo, si has editado el php.ini principal del servidor, es posible que necesites reiniciar el servicio de Apache o PHP-FPM. En DirectAdmin, puedes hacerlo desde el panel de administración, en la sección "System Services" o "Servicios del Sistema". Busca Apache o PHP-FPM y haz clic en "Restart".
Verificar el cambio en PHP
Para confirmar que PHP ya usa la nueva zona horaria, puedes crear un archivo PHP con el siguiente código:
<?php
echo date_default_timezone_get();
echo '<br>';
echo date('Y-m-d H:i:s');
?>
Si la primera línea muestra tu zona horaria (por ejemplo, Europe/Madrid), entonces todo está configurado correctamente.
¿Qué pasa si no encuentro php.ini en mi hosting?
Es posible que tu plan de hosting no te permita acceder al php.ini directamente. Esto es común en planes de hosting compartido muy básicos. No te preocupes, hay alternativas.
Usar el archivo .htaccess
Si tu servidor usa Apache, puedes configurar la zona horaria de PHP desde el archivo .htaccess de tu carpeta raíz. Solo tienes que añadir la siguiente línea:
SetEnv TZ Europe/Madrid
Reemplaza Europe/Madrid con tu zona horaria. Este método funciona en la mayoría de los servidores Apache que usan mod_php.
Usar un archivo de configuración en la raíz (php.ini local)
Otra opción es crear un archivo llamado php.ini en la raíz de tu cuenta (donde está public_html) y añadir la línea date.timezone = "Europe/Madrid". Algunos hosts permiten esta sobrescritura automática.
Usar código PHP en cada script
Si todo lo demás falla, siempre puedes definir la zona horaria al principio de cada archivo PHP que uses. Esto es menos elegante, pero funciona:
<?php
date_default_timezone_set('Europe/Madrid');
// El resto de tu código
?>
[TIP] La función date_default_timezone_set() es tu mejor amiga si no tienes acceso a los archivos de configuración. Puedes incluirla en un archivo de configuración común (por ejemplo, config.php) que se incluya en todas tus páginas.
Zonas horarias comunes y su formato
Para que no tengas que buscar, aquí tienes una lista de las zonas horarias más utilizadas en el mundo hispanohablante:
- España (península):
Europe/Madrid - Canarias:
Atlantic/Canary - México (Ciudad de México):
America/Mexico_City - Argentina:
America/Argentina/Buenos_Aires - Colombia:
America/Bogota - Chile:
America/Santiago - Perú:
America/Lima - Venezuela:
America/Caracas - Estados Unidos (Nueva York):
America/New_York - Estados Unidos (Los Ángeles):
America/Los_Angeles
Esta lista es solo una referencia. Puedes encontrar la lista completa de zonas horarias soportadas por PHP en la documentación oficial de PHP.
Errores comunes al cambiar la zona horaria
A veces, aunque sigas los pasos, la hora no se muestra correctamente. Aquí tienes los problemas más habituales y sus soluciones:
Error: "It is not safe to rely on the system's timezone settings"
Este es uno de los errores más clásicos. Aparece cuando PHP no tiene una zona horaria definida y usa la del sistema. La solución es exactamente lo que estamos haciendo: definir date.timezone en tu php.ini o usar date_default_timezone_set().
Error: La hora cambia sola cada cierto tiempo
Esto suele pasar si tienes varios archivos php.ini y hay uno que se está cargando después que el otro. Revisa si tienes un php.ini en tu carpeta raíz y otro en una subcarpeta. El de la subcarpeta tiene prioridad sobre el de la raíz.
Error: La hora se muestra en UTC a pesar de los cambios
Si has cambiado la zona horaria en DirectAdmin pero PHP sigue mostrando UTC, es porque no has tocado el php.ini. Recuerda que son dos configuraciones independientes. DirectAdmin controla la hora del sistema, pero PHP necesita su propia directiva.
Preguntas frecuentes (FAQ)
¿Puedo cambiar la zona horaria sin tener acceso de administrador?
Sí, si tienes acceso a tu panel de usuario de DirectAdmin, puedes cambiar la zona horaria de PHP desde la sección "PHP Settings". Si no tienes esa opción, puedes usar el archivo .htaccess o el código PHP date_default_timezone_set().
¿Afecta el cambio de zona horaria a mis bases de datos?
No directamente. Las bases de datos (MySQL, por ejemplo) tienen su propia configuración de zona horaria. Sin embargo, si usas funciones de fecha y hora de MySQL en tus consultas, es posible que veas discrepancias. Para solucionarlo, puedes ejecutar la siguiente consulta SQL al conectar:
SET time_zone = 'Europe/Madrid';
O puedes configurarlo en tu archivo de conexión a la base de datos.
¿Qué pasa con los cron jobs?
Los cron jobs se ejecutan según la hora del sistema. Si has cambiado la zona horaria en DirectAdmin, los cron jobs se ejecutarán en la nueva zona horaria. Si solo has cambiado la de PHP, los cron jobs seguirán usando la hora del sistema.
¿Es necesario reiniciar el servidor después de cambiar php.ini?
Normalmente no, sobre todo si trabajas con PHP-FPM. Pero si usas mod_php con Apache, a veces es necesario reiniciar Apache para que los cambios surtan efecto. En DirectAdmin, puedes hacerlo desde el panel de administración.
¿Puedo usar el mismo método en otros paneles de control?
Este artículo se centra en DirectAdmin, pero el método de editar php.ini es universal. Si usas otro panel de control como cPanel o Syspanel (el puerto de acceso al panel Syspanel es el 2106), los principios son los mismos. La diferencia está en la interfaz para acceder al php.ini. En Syspanel, puedes encontrar la configuración de PHP en la sección de "Servicios" o "Configuración de PHP".
Consejos finales
Cambiar la zona horaria en DirectAdmin y PHP es una tarea que parece complicada, pero una vez que sabes dónde está cada cosa, es muy rápida. Te recomiendo que empieces por el método más sencillo: el panel de usuario de DirectAdmin. Si no tienes esa opción, ve al .htaccess y, como último recurso, usa el código PHP.
Espero que esta guía te haya sido de ayuda. Si tienes alguna otra duda, no dudes en consultar la documentación oficial de PHP o de DirectAdmin, o contactar con tu proveedor de hosting. ¡Buena suerte con tu web!
