GET Cron ジョブで 406 エラーが発生しましたか?

GET Cron ジョブで 406 エラーが発生しましたか?

この cron で 406 エラー ページが表示されます。

編集

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-クイックリファレンス

残りの質問は、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 / Internet Explorer ブラウザー セッションであるかのように表示されます。

それ以外の場合は、その Perl モジュールのより堅牢な機能を使用するための小さなスクリプトを作成し、get を直接呼び出す代わりに cron ジョブでスクリプトを実行する必要があるかもしれません。ここでいくつかの例を見つけました:http://perlmeme.org/tutorials/lwp.html

関連情報