
この 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