406 Ошибка с GET Cron Job?
Я получаю страницу с ошибкой 406 с этим cron.
РЕДАКТИРОВАТЬ
я обновил cron, чтобы использовать вместо него wget, но я все еще не получаю вывод со страницы. вот новый crontab:
/usr/bin/wget "https://abc.com/cron/sendBulletinEmails.php" >> /home/abc/public_html/cron/logs/sendBulletinEmails.log
однако, это даже не использование файла журнала. вместо этого я получаю электронное письмо. вот вывод по электронной почте:
--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]
я также попробовал этот crontab (чтобы получить правильный вывод):
/usr/bin/wget --append-output=/home/abc/public_html/cron/logs/sendBulletinEmails.log "https://abc.com/cron/sendBulletinEmails.php"
но это также дает мне тот же журнал, что и электронная почта. страница выводит текст, который я и хочу записать в мой лог-файл. какие-нибудь идеи относительно того, как заставить это работать?
еще раз спасибо!
OLD
вот crontab (скопированный с cPanel):
* * * * * GET https://abc.com/cron/sendBulletinEmails.php >>
/home/abc/public_html/cron/logs/sendBulletinEmails.log
вот журнал:
<!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>
Кроме того, когда я запускаю его из собственного браузера, он работает.
какие-либо идеи относительно того, почему это происходит? спасибо =)
2 ответа
Получение электронного письма от cron - это дизайн. Вы можете отключить это, добавив >/dev/null 2>&1
до конца строки. (Узнайте больше о cron здесь: http://adminschoice.com/crontab-quick-reference)
Я думаю, что остальную часть вопроса можно решить, если немного почитать про wget. Вы пытаетесь отправить вывод в файл журнала, используя стандартное перенаправление вывода. Содержимое этого файла будет только тем, что вы обычно видите на экране. Wget не отображает сам файл, поэтому перенаправление вывода здесь не будет работать. Хорошей новостью является то, что в wget есть встроенный переключатель для управления выходным файлом.
Попробуй это:
/usr/bin/wget -O /home/abc/public_html/cron/logs/sendBulletinEmails.log "https://abc.com/cron/sendBulletinEmails.php" >/dev/null 2>&1
Сервер может искать HTTP_USER_AGENT для блокировки автоматических инструментов. Если доступно для вас, попробуйте "wget". Поддерживает -U or --user-agent=AGENT
включите командную строку, чтобы ваш скрипт выглядел так, как будто это действительный сеанс браузера Firefox / Interner Explorer.
В противном случае вам может понадобиться написать небольшой сценарий, чтобы использовать более надежные функции этого модуля Perl и заставить задание cron запускать сценарий вместо вызова get напрямую. Я нашел несколько примеров этого здесь: http://perlmeme.org/tutorials/lwp.html