Aplicações em PHP muitas vezes podem apresentar problemas se não encontrarem a variável timezone definida no arquivo php.ini devido ao fato de elas não consultarem o timezone local do servidor.

Vamos então resolver este problema definindo o timezone no arquivo de configuração do PHP, o próprio php.ini.

Como muitas vezes fica a dúvida a respeito da localização exata do arquivo, para encontrálo basta executar no terminal do servidor o comando:

find / -name php.ini

php.ini

Em nosso exemplo, como pode ser observado na imagem, temos duas localizações: /etc/php5/cli/php.ini e /etc/php5/apache2/php.ini

Para termos certeza da alteração, vamos editar os dois arquivos, localizando a linha date.timezone e alterá-la conforme nossa necessidade, em meu caso a linha ficou da seguinte forma:

date.timezone = America/Sao_Paulo

Uma lista dos fusos horários suportados pelo PHP pode ser encontrada na própria Documentação do PHP

Após a edição dos arquivos ser concluída, é necessário reiniciar o servidor Apache2 para que as alterações surtam efeito:

#/etc/init.d/apache2 restart

E finalmente, para conferir se as alterações tiveram efeito, crie um arquivo teste.php com o conteúdo a seguir:

<?php
if (date_default_timezone_get()) {
    echo 'date_default_timezone_set: ' . date_default_timezone_get() . "\n";
}

if (ini_get('date.timezone')) {
    echo 'date.timezone: ' . ini_get('date.timezone') . "\n";
}
?>

Salve-o e execute com um ‘php teste.php’. Você terá um resultado como este abaixo (conforme o timezone configurado:

timezone