Quase sempre a tarefa cron corre, mas falha por uma de seis razões: caminho incompleto, um sinal % sem protecção, a versão do PHP errada, um script sem permissão, a hora do servidor, ou saída deitada fora. Percorra a lista por ordem; a primeira que encontrar costuma ser a causa. Se ainda não criou a tarefa, comece por tarefas cron: para que servem e como criar uma.
Primeiro, saber se corre
| 1 |
Acrescente um registo. No fim do comando ponha >> /home/CONTA/cron.log 2>&1. Passa a guardar tudo o que o comando escreve, erros incluídos.
|
|
| 2 |
Ponha o seu e-mail no campo de notificação da página das tarefas, e deixe de fora o >/dev/null enquanto testa. Se receber a mensagem, a tarefa arrancou.
|
|
| 3 |
Agende para daqui a poucos minutos. Na hora do servidor, que pode não ser a sua: escreva date no Terminal do cPanel (se a conta o tiver) para ver a hora. Depois de testar, volte ao horário normal.
|
|
| 4 |
Corra o mesmo comando à mão, no Terminal, copiado da linha da tarefa. Se falhar aí, o erro aparece no ecrã e a causa está no comando, não no cron.
|
|
As causas, por ordem de frequência
| Sintoma |
Causa provável |
O que fazer |
| Funciona no Terminal, não no cron |
O cron não arranca na pasta do seu site e tem muito poucas variáveis de ambiente. |
Use caminhos completos para tudo, desde /home/CONTA/. No PHP, use __DIR__ nos require. |
A tarefa com date +%F ou %Y falha |
No cron, o sinal % significa fim de linha. |
Escreva \%. Exemplo: date +\%F. |
| Erros de extensão ou de versão |
A tarefa usa outra versão do PHP que o site. |
Chame o PHP da versão que o site usa, ou veja a extensão em Select PHP Version. |
«Permission denied» num script .sh |
O ficheiro não é executável. |
Corra-o com /bin/bash /home/CONTA/scripts/x.sh, ou dê-lhe permissão de execução. |
«bad interpreter» ou erros estranhos no .sh |
O ficheiro foi gravado com fins de linha de Windows. |
Grave de novo com fins de linha Unix (LF) no editor. |
| Corre a uma hora que não esperava |
O servidor tem a sua hora, e pode não ser a sua. |
Ajuste o horário à hora do servidor. Veja a hora do servidor. |
| Não recebe e-mail nenhum |
A saída vai para /dev/null, ou o campo de notificação está vazio. |
Tire o >/dev/null até confiar na tarefa. |
|
Uma tarefa silenciosa que nunca funcionou parece igual a uma que funciona. Faça sempre o script deixar uma prova, como uma linha com a data num ficheiro ou numa tabela. É a única forma de saber que não só arrancou como chegou ao fim.
|
Se o script depende de muita memória ou de muito tempo, pode ser interrompido pelos limites da conta e deixar apenas uma linha de erro no registo de erros do PHP. Veja onde está o registo de erros do PHP. Se o disco da conta estiver cheio, o script também não consegue gravar nada.
|
Antes de agendar, corra o comando uma vez à mão e confirme que faz o que quer. Só depois o ponha no cron. Uma tarefa nova que falha a primeira vez costuma falhar por um detalhe do comando e não por causa do cron.
|
|
A tarefa continua a não correr? Envie-nos a linha completa e o domínio, e dizemos-lhe o que o cron fez. Tenha em conta que o conteúdo do script é seu.
Abrir um pedido
|
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 321,75 MT/mês (plano de 3 anos, com cupão) Ver planos |