Ir al contenido principal

Zona Horaria de Chile en PHP

Luego del último "no cambio de hora" oficial en Chile, tuvimos algunos problemas en el servidor linux de la empresa, ante lo cual como primera solución optamos por establecer la zona horaria del servidor en la zona Argentina.

Luego de unos días, las aplicaciones en php comenzaron a registrar como warning la diferencia entre la zona horaria de las aplicaciones y la zona del sistema, mostrando inconsistencia.

Gracias al post http://gmt-4.blogspot.com/2008/03/php-y-las-zonas-horarias.html me enteré de que las versiones recientes de php permiten trabajar con su propia zona.

yum-install php-devel pecl install timezonedb

Instalar módulo timezonedb parchado

El procedimiento a seguir es descargar los fuentes de timezonedb (que están en lenguaje C), modificar la definición de la zona America/Santiago y luego agregar el módulo a PHP.

En primer lugar descargamos los fuentes mediante:
pecl download timezonedb

Esto descargará un archivo con la versión más reciente del módulo. Lo descomprimimos y entramos al directorio recien creado:
tar xfz timezonedb-"año.mes".tgz
cd timezonedb-"año.mes" donde año y mes son números.

El archivo timezonedb.h es el que contiene la información de las zonas horarias.

Luego, estamos en condiciones de compilar el módulo ejecutando los siguientes comandos:

phpize
./configure
make

Luego, como usuario root, instalamos el módulo.
make install


En caso de encontrar el error "Cannot find autoconf" me guié por el siguiente enlace:

http://duntuk.com/cannot-find-autoconf

En este caso la solución era instalar el autoconf con yum install autoconf

Finalmente para ver qué zona horaria está utilizando php se puede imprimir con el comando

echo date_default_timezone_get();

http://php.net/manual/es/function.date-default-timezone-set.php

Ojo, hay que verificar si está instalada la extensión en el php.ini. Para ello en el caso de zend server,  buscar en  /usr/local/zend/etc/php.ini y con el editor vim y el comando / se puede buscar el texto extension=timezonedb.so

Finalmente para verificar podemos hacer un php con el código:

echo date("Y-m-d G:i:s O e I\n", strtotime("2012-03-23"); 

y debería indicar en mi caso "2012-03-23 1:00:00 -0300 America/Santiago 1" donde es -3 ya que aún no se cambia al horario de invierno.


Comentarios

Entradas más populares de este blog

Nuevo blog.

Instalando Ralink RT2005 Wireless en Fedora Core 4

Tuve algunos problemas con el driver , así­ que bajé el beta que aparece en la lista inferior. La instrucción era más simple, ir a la carpeta escribiendo desde la consola: "cd CARPETA" en mi caso "cd /home/nelson/Desktop/rt2500-1.1.0-b3.tar.gz_FILES/rt2500-1.1.0-b3/Module" aunque primero hay que descomprimir el archivo rt2500-1.1.0-b3.tar.gz Según las instrucciones hay que ejecutar "$make" y después abrir la cuenta como root, pero no me funcionó así que entré como root altiro escribiendo "su" y luego ingresando la contraseña correspondiente. A continuación "make" y luego "make install-fedora" Luego abrí la configuración de red en Escritorio/configuración del sistema/Red (con el mouse en el ambiente gráfico Gnome) y puse nuevo, conexión inalámbrica y ahora sí me listó la tarjeta :)