Corrija o horário do WHMCS definindo o date.timezone do PHP como America/Sao_Paulo e usando o mesmo fuso no cron, como pede a documentação oficial.
O WHMCS não tem um campo de fuso horário no painel. Ele usa o relógio do servidor e a configuração date.timezone do PHP. Se o servidor está em UTC, faturas, tickets e logs aparecem três horas adiantados em relação a Brasília. Pior: se o PHP que abre o painel no navegador e o PHP que roda o cron usam fusos diferentes, a automação passa a rodar fora de hora.
Antes de começar
- Acesso ao cPanel da conta onde o WHMCS está instalado.
- Acesso de administrador ao WHMCS.
- O fuso certo para a sua empresa. Para o horário de Brasília, use
America/Sao_Paulo.
Descubra qual fuso o WHMCS está usando
- No navegador: no WHMCS, abra Utilities » System » PHP Info e procure por
date.timezone. - No cron: no cPanel, abra Avançado » Terminal (se a sua conta tiver) e rode:
Sem Terminal, crie um cron temporário que grave a saída num arquivo, rode uma vez e apague o cron depois:php -i | grep date.timezonephp -i | grep date.timezone > /home/usuario/fuso-cron.txt - Compare. Os dois precisam mostrar o mesmo valor. O WHMCS avisa quando não batem: em Configuration » System Health aparece o alerta Cron PHP Timezone.
Como alterar o timezone do PHP no cPanel
Em servidores com CloudLinux (como os da POP Hosting), a versão e as opções do PHP de cada conta ficam em Select PHP Version, e valem tanto para o site quanto para o PHP de linha de comando que o cron usa.
- No cPanel, abra Software » Select PHP Version.
- Vá na aba Options (Opções).
- Em date.timezone, escolha America/Sao_Paulo e salve, se a tela pedir.
- Confira de novo em Utilities » System » PHP Info no WHMCS.
php_value date.timezone no arquivo htaccess muda só o PHP do site. O cron não lê o htaccess e continua no fuso antigo. Se for por esse caminho, ajuste também o comando do cron, como no próximo passo.Coloque o mesmo fuso no comando do cron
É a forma mais garantida de o cron usar o fuso certo, e é a recomendada pela documentação do WHMCS. Em cPanel » Avançado » Cron Jobs, edite a linha do WHMCS e acrescente -d date.timezone=... logo depois de php:
php -d date.timezone=America/Sao_Paulo -q /home/usuario/crons/cron.php
Troque /home/usuario/crons/ pelo caminho real da pasta crons da sua instalação (veja como configurar o cron do WHMCS).
Confira se deu certo
- Utilities » Automation Status deve mostrar o selo verde Ok nas próximas horas.
- O alerta Cron PHP Timezone do System Health só some depois da próxima execução diária do cron. Não estranhe se ele continuar lá por algumas horas.
- Em Configuration » System Settings » Automation Settings, confira o Time of Day: é a hora, no fuso novo, em que as tarefas diárias (faturas, lembretes, suspensões) rodam.
E o date_default_timezone_set no configuration.php?
Tutoriais antigos, inclusive a versão anterior deste artigo, mandavam colocar date_default_timezone_set('America/Sao_Paulo'); no configuration.php. Esse atalho não faz parte da documentação oficial, que hoje orienta ajustar o date.timezone do PHP ou passar o fuso no comando do cron. Se a sua instalação tem essa linha, deixe o mesmo fuso nos três lugares ou remova a linha depois de ajustar o PHP, para não ficar com duas configurações brigando.
Outros fusos do Brasil
| Região | Valor do date.timezone | Diferença para UTC |
|---|---|---|
| Horário de Brasília (Sul, Sudeste, Nordeste, Goiás, DF, Pará, Amapá, Tocantins) | America/Sao_Paulo | −3 h |
| Amazonas, Roraima, Rondônia, Mato Grosso e Mato Grosso do Sul | America/Manaus | −4 h |
| Acre | America/Rio_Branco | −5 h |
| Fernando de Noronha | America/Noronha | −2 h |
O Brasil não tem horário de verão desde 2019. Com uma versão de PHP atualizada, America/Sao_Paulo já considera isso.
Problemas comuns
A autenticação em dois fatores recusa o código certo
Mensagens como "The code you entered did not match what was expected" costumam ser relógio ou fuso errado no servidor. Confira o fuso do PHP e peça ao suporte para verificar o relógio do servidor.
As respostas de tickets por e-mail aparecem com horário errado
O PHP do cron, que importa os e-mails, está em fuso diferente do PHP do navegador. Ajuste o comando do cron como mostrado acima.
As faturas são geradas no horário errado
O cron roda num fuso e o Time of Day foi pensado em outro. Depois de alinhar os fusos, revise o Time of Day.