crontabからエクスポートされたPHP出力を保存する

crontabからエクスポートされたPHP出力を保存する

毎日電子メールを送信するために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 0777PHPスクリプトが画像を保存するフォルダに設定しました。その後、Apacheユーザーが実行していた計画が正常に実行され、電子メールが送信されました。

おすすめ記事