Ubuntu 22.04.1 LTSのPHP8.2でPHPファイルをcronで実行する方法
やることは難しくないのですが、地味に失敗しがち。
簡単にまとめておく。
※Ubuntu 22.04.1 LTS
※PHP8.2
1、cronの記載場所
「/etc/cron.d」に実行したいファイルを置く。
cronはいろいろやり方がありますが、
自分はそこに置くのが一番好きです。
ここに置いたファイルは自動的に読み込んでくれて、
指定の時間通り実行してくれます。
Let’s Encryptのcertbotの自動更新cronもここにあります。
2、cronの記載内容
2 3 * * * nginx /usr/bin/php8.2 /var/www/html/doudonn.com/cron/test.php
左から順に
・実行スケジュール
・実行ユーザー
・実行プログラム
・実行ファイル
と書きます。
Ubuntu 22.04の場合は「/usr/bin」がルートで、
その下に「php8.2」などバージョン別にディレクトリがあります。
基本的には今使っているバージョンのやつを指定すると良い。
場所はこのコマンドで確認できる。
which php8.2
cronのリロードなどはする必要はありません。
保存したら自動的に読み込んでくれます。
3、cronログは保存するようにしよう
Ubuntu 22.04はデフォルトではcronログは保存しません。
保存するためには設定ファイルをいじる必要がある。
「/etc/rsyslog.d/50-default.conf」を修正します。
//これのコメントアウトを解除するだけ
#cron.* /var/log/cron.log
これで次回のcron実行時に自動的にログが作られます。
構文エラーなんかもここに出力されるので、新規cronを作ったら見ておこう。
ちなみに、エラーになったら二度と実行してくれません。
--
長い処理の場合はphp.iniでタイムアウト時間を変更しておこう。
Nginxは関係ないので、Nginxのタイムアウト時間を長くする必要はありません。