Tener las hora del servidor MySQL y de PHP sincronizadas permite que no tengamos problemas en el análisis de los datos de nuestras aplicaciones y/o sistemas, en especial si uno de los factores de medición dependen de la diferencia de estos tiempos. Acá veremos como tener la misma zona horaria para ambos servicios.
Suele suceder que cuando usamos funciones de Mysql que retornan la hora y además otras por parte de PHP, la hora en ambas no es la misma. Esto es debido a que las configuraciones de ambas no son la misma.
Ambas horas vienen desde la configuración del servidor, pero por defecto ambas están en la zona horaria UTC, así que no importa la hora que tengamos en el servidor, la hora de estos servicios será distinta si no las configuramos de manera adecuada.
A continuación como configurar ambas.
Configurando la zona horaria en el servidor MySQL
Si bien podemos editar directamente el archivo de configuración de MySQL, lo que haremos es crear un archivo distinto que solo posea la definición de la zona horaria. De esta manera evitamos perder esta información por alguna actualización.
- Creamos el archivo de configuración en la carpeta conf.d de mysql. Todos los archivos con extensión .conf serán cargados desde aquí.
- Definimos el timezone del archivo. Acá puedes usar diferencias horarias, o zonas horarias. Las diferencias horarias son contra UTC que es el : +00:00 .
- Reiniciamos el servidor de mysql para actualizar la información.
Si bien puedes usar el editor que quieras, yo usaré VIM por costumbre.
#vim /etc/mysql/conf.d/date.conf
y en el contenido definimos nuestra zona horaria. En mi caso además de «America/Santiago» podría haber puesto «-03:00».
default_time_zone='America/Santiago'
Ahora reiniciamos el servicio y debería estar funcionando.
# service mysql restart
Para corroborarlo, podemos loguearnos a mysql y ejecutar :
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2016-02-10 12:03:35 |
+---------------------+
1 row in set (0.00 sec)
Configurando la zona horaria en PHP
En este caso si editaremos directamente el archivo php.ini que se encarga de la configuración de php para apache. Si tienes otro servidor simplemente lo haces donde corresponda.
# vim /etc/php5/apache2/php.ini
Buscamos y editamos el siguiente contenido según corresponda :
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "America/Santiago"
Y en este caso reiniciamos el servidor de apache.
# sudo service apache2 restart
Eso sería todo, ahora tu BdD y aplicación web tienen la misma hora :).