
estou recebendo uma página de erro 406 com este cron.
EDITAR
atualizei o cron para usar o wget, mas ainda não estou obtendo a saída da página. aqui está o novo crontab:
/usr/bin/wget "https://abc.com/cron/sendBulletinEmails.php" >> /home/abc/public_html/cron/logs/sendBulletinEmails.log
no entanto, isso nem sequer está usando o arquivo de log. em vez disso, recebo um e-mail. aqui está a saída do e-mail:
--09:20:01-- https://abc.com/cron/sendBulletinEmails.php
=> `sendBulletinEmails.php'
Resolving abc.com... 69.91.162.123
Connecting to fin-iq.com|69.91.162.123|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
0K 122.58 B/s
09:20:02 (122.58 B/s) - `sendBulletinEmails.php' saved [101]
eu também tentei este crontab (para obter a saída correta):
/usr/bin/wget --append-output=/home/abc/public_html/cron/logs/sendBulletinEmails.log "https://abc.com/cron/sendBulletinEmails.php"
mas isso também me dá o mesmo registro do email. a página gera texto, que é o que eu quero registrar em meu arquivo de log. alguma idéia de como fazer isso funcionar?
obrigado novamente!
VELHO
aqui está o crontab (copiado do cPanel):
* * * * * GET https://abc.com/cron/sendBulletinEmails.php >>
/home/abc/public_html/cron/logs/sendBulletinEmails.log
aqui está o registro:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>406 Not Acceptable</title>
</head><body>
<h1>Not Acceptable</h1>
<p>An appropriate representation of the requested resource /cron/sendSurveyEmails.php could not be found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>
além disso, quando executo no meu próprio navegador, funciona.
alguma idéia de por que isso está acontecendo? obrigado =)
Responder1
Receber um e-mail do cron é intencional. Você pode desativar isso adicionando >/dev/null 2>&1
no final da linha. (Leia mais sobre o cron aqui:
http://adminschoice.com/crontab-quick-reference)
Acho que o resto da questão poderia ser resolvido lendo um pouco mais sobre o wget. Você está tentando enviar a saída para um arquivo de log usando o redirecionamento de saída padrão. O conteúdo desse arquivo será apenas o que você normalmente veria na tela. O Wget não exibe o arquivo em si, portanto o redirecionamento de saída não funcionará aqui. A boa notícia é que o wget possui um switch integrado para gerenciar o arquivo de saída.
Experimente isto:
/usr/bin/wget -O /home/abc/public_html/cron/logs/sendBulletinEmails.log "https://abc.com/cron/sendBulletinEmails.php" >/dev/null 2>&1
Responder2
O servidor pode estar procurando HTTP_USER_AGENT para bloquear ferramentas automatizadas. Se disponível para você, tente 'wget'. Ele suporta a -U or --user-agent=AGENT
opção na linha de comando para ajudar seu script a parecer uma sessão válida do navegador Firefox/Interner Explorer.
Caso contrário, talvez seja necessário escrever um pequeno script para usar recursos mais robustos desse módulo Perl e fazer com que o cron job execute o script em vez de chamar get diretamente. Encontrei alguns exemplos disso aqui:http://perlmeme.org/tutorials/lwp.html