
Я получаю страницу ошибки 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"
но это тоже дает мне тот же журнал, что и электронное письмо. Страница выводит текст, который я хочу зарегистрировать в своем файле журнала. Есть идеи, как это сделать?
еще раз спасибо!
СТАРЫЙ
вот 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>
Кроме того, когда я запускаю его из своего браузера, он работает.
есть идеи, почему это происходит? спасибо =)
решение1
Получение электронной почты от 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
решение2
Сервер может искать HTTP_USER_AGENT для блокировки автоматизированных инструментов. Если это доступно, попробуйте 'wget'. Он поддерживает переключатель -U or --user-agent=AGENT
в командной строке, чтобы помочь вашему скрипту выглядеть так, как будто это допустимый сеанс браузера Firefox / Interner Explorer.
В противном случае вам может потребоваться написать небольшой скрипт, чтобы использовать более надежные функции этого модуля Perl и заставить задание cron запустить скрипт вместо прямого вызова get. Я нашел несколько примеров здесь:http://perlmeme.org/tutorials/lwp.html