Quando criamos um site seja ele WordPress, Magento ou em script PHP e fazemos deploy no sistema, o arquivo de configuração principal dele é o php.ini como todos sabemos. Aqui no Fator Binário os artigos são publicados com base em NginX e ISPConfig, e de um modo geral este arquivo reside em /etc/php5/fpm/php.ini.
Seguindo os vários tutoriais, tanto aqui no site como em outros na internet, note que é comum configurarmos o parâmetro date.timezone dentro do php.ini para America/Sao_Paulo que é o correto na maioria dos casos.
Porém, em raras ocasiões talvez você tenha visto uma linha de erro igual a esta abaixo nos logs de erro do site:
[FATAL] Configuration variable date.timezone is not set, guessed timezone America/Sao_Paulo. Please set date.timezone=”America/Sao_Paulo” in php.ini!
Mas como eu disse acima o parâmetro está configurado corretamente no php.ini.
O erro acontece porque em determinadas configurações e/ou condições daquele script ele está sendo executado em modo de linha de comando, por exemplo, dentro do seu site há uma trigger que dispara um evento agendado. E isso também pode ocorrer quando você adiciona uma tarefa agendada (CRON) pelo ISPConfig ou em outro painel que irá disparar o script PHP.
Quando o PHP é usado desta maneira ele utiliza outra configuração, a de linha de comando (CLI).
Para solucionar edite o arquivo /etc/php5/cli/php.ini (note o diretório “cli”), e dentro dele localize o parâmetro date.timezone. Altere-o para o mesmo timezone do php.ini principal e em seguida reinicie o PHP.
Após isso execute novamente o seu script e note que não dará mais erro.