Ajustando fuso horário no PHP
Algumas aplicações precisam saber o fuso horário para realizar algumas ações específicas e pode ser uma boa ideia ajustar o date.timezone[1] nas configurações do PHP para essas aplicações.
Se o comando abaixo não exibir nenhuma saída, provavelmente o date.timezone não está configurado.
$ php -r "echo ini_get('date.timezone');"
É possível verificar a string que será exibida pela aplicação com o comando date[2] e o corrente fuso horário usando o comando abaixo.
$ php -r "echo date('r');"
>>> Fri, 22 Nov 2019 14:28:03 +0000
O +0000 indica que o fuso horário atual é o UTC, que é padrão do PHP quando o date.timezone não está configurado.
Depois de pegar uma opção de fuso horário a partir da documentação[3] do PHP, o teste para verificar se esta opção dará o resultado esperado pode ser feito com o comando abaixo, supondo que a opção escolhida seja America/Sao_Paulo.
$ php -d date.timezone=America/Sao_Paulo -r "echo date('r');"
>>> Fri, 22 Nov 2019 11:35:38 -0300
O -0300 indica o fuso horário America/Sao_Paulo. Para persistir esta configuração devemos definir date.timezone no arquivo php.ini. O lugar deste arquivo pode variar conforme a distro usada.
No Archlinux, todos os arquivos com extensão .ini presentes no diretório /etc/php/conf.d vão fazer parte do php.ini. O comando abaixo adiciona a configuração de fuso horário às configurações do PHP.
echo date.timezone=America/Sao_Paulo >> /etc/php/conf.d/my-customs.ini
Feito isto, é possível rodar os mesmos comandos acima para verificar se as configurações de fuso horário estão funcionando corretamente.
$ php -r "echo ini_get('date.timezone');"
>>> America/Sao_Paulo
$ php -r "echo date('r');"
>>> Fri, 22 Nov 2019 11:51:25 -0300
Referências
https://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
https://www.php.net/manual/en/function.date.php
https://www.php.net/manual/en/timezones.php
Top comments (0)