毎日電子メールを送信するためにcrontabで予約する必要があるPHPファイルがあります。これは私のクローンタブです:
45 23 * * * php /var/www/html/linus/class/runnable/dailyStaffReport.php
私はそれが動作しないことがわかりました。つまり、メールは送信されませんでした。だから、次のことを試しました。
00 11 * * * php /var/www/html/linus/class/runnable/dailyStaffReport.php
>> /var/log/crontab.linus.log 2>&1
注:ここではタイミングは重要ではありません。テスト目的で変更を続けます。
それは無駄です。ファイルがcrontab.linus.log
生成されませんでした。
/var/log/cron
ファイルのスキャン中に私のcronが実行されたことがわかりました。
Feb 25 11:22:01 shoutcast01 CROND[3395]: (apache) CMD (php
/var/www/html/linus/class/runnable/dailyStaffReport.php
>> /var/log/crontab.linus.log 2>&1)
最後に手動で実行すると、受信トレイphp /var/www/html/linus/class/runnable/dailyStaffReport.php
にすぐに電子メールが届きます。私はechoes
スクリプトがどこかで失敗したことを確認するためにPHPスクリプトにいくつかのスクリプトを書いた。
[root@shoutcast01 ~]# php /var/www/html/linus/class/runnable/dailyStaffReport.php
LOADING STAFF USERS...
COMPUTING STAFF WORK TIME...
BUILDING CHART...
SAVING CHART...
WRITING DOWN THE CHART...
SENDING THE EMAIL...
1
DONE.
同様に、2分ごとに電子メールを送信するようにスケジュールされた他のファイルがありますが、それはうまく機能します。
[root@shoutcast01 ~]# crontab -u apache -l
22 11 * * * php /var/www/html/linus/class/runnable/dailyStaffReport.php
>> /var/log/crontab.linus.log 2>&1
*/2 * * * * php /var/www/html/linus/class/runnable/dispatchEmail.php
まとめる
- 端末でスクリプトを手動で実行すると、電子メールが届きます。
- 電子メールは配信されませんが、cronログにスクリプトが実行されたことを知らせます。
- 何も記録できません
>> /var/log/crontab.linus.log 2>&1
この問題を解決するために私ができることについての提案はありますか?
ベストアンサー1
デバッグが機能しない問題は、デバッグ情報をここに保存しようとしていますが、ファイルが/var/log/crontab.linus.log
存在せず、ユーザーにapache
ファイルを作成する権限がないことです。
この事実に気づき、自分でファイルを作成しました。
touch crontab.linus.log
chown apache crontab.linus.log
chgrp apache crontab.linus.log
chmod 0777 crontab.linus.log
その後、ジョブのスケジュールを変更して実行を待ちました。元の問題もライセンスに関連していることが判明しました。
PHPの致命的なエラー: 'ファイルに書き込めません[...]メッセージでキャッチされていない例外 'ImagickException'
そのため、chmod 0777
PHPスクリプトが画像を保存するフォルダに設定しました。その後、Apacheユーザーが実行していた計画が正常に実行され、電子メールが送信されました。