Muitas vezes o horário de verão brasileiro pode afetar o funcionamento de nossas aplicações escritas em PHP que utilizem funções de data, e para que não aconteça nenhum problema existem algumas alternativas que podem ser adotadas para automatizar o processo de transição de horário (BRT/BRST).
A mais comum delas (e menos eficiente na minha opinião) é setar o horário diretamente no seu php.ini através da linha:
date.timezone = "Etc/GMT+2"
Sendo que também é possível utilizar esta chamada diretamente no script de sua aplicação com:
date_default_timezone_set("Etc/GMT+2");
A forma mais eficiente que encontrei para realizar estas transições de horário de forma automática foi utilizando o módulo php-timezonedb que está disponível através do PECL.
Para realizar a instalação do timezonedb é necessário ter as bibliotecas do php (php-dev) disponíveis na máquina.
A forma mais prática de instalação é diretamente através do repositório PECL:
# pecl install timezonedb
E para carregar o módulo na inicialização do PHP, adicione ao php.ini (ou uma entrada no php.d):
extension=timezonedb.so
Para testar o módulo sem a necessidade de reiniciar o servidor web utilize o próprio php-cli:
# php-cli -r "print date('d/m/Y H:i:s e T');"
A saída (em horário de verão) será algo parecido com:
04/02/2008 19:23:32 America/Sao_Paulo BRST
E em horário normal:
04/02/2008 19:23:32 America/Sao_Paulo BRT
Para instalação em um número elevado de servidores é recomendável utilizar o proprio empacotamento de sua distribuicaopara automatizar o processo. Para aqueles que utilizam distribuicoes baseadas em RPM, deixei o pacote source disponivel para download… php-timezonedb.el4.src.rpm