やっぱりphpのスクリプトはcronに直接設定しないほうがいいかもしれない

また初歩的なことでつまづいてしまった。ありがちなミスで開発中にコマンド上で実行してうまくいってたけどcronに登録したらエラーになってたってやつ。スクリプト内で呼び出す外部ファイルとかフルパスで書いておけば問題ないくらいで最近この形にしてたけどうまくいかないことがあって原因わかるのに時間かかった。

こんなかんじのcron設定

5 10 * * * php /path/to/script.php
5 10 * * * PATH="/usr/local/bin:$PATH" php /path/to/script.php

cronに設定されたスクリプトはそのままだとbashrc、bash_profileあたりが読み込まれないので環境変数まわりがシェルでログインしての開発中とだいぶ状況が異なる。

script.sh

#!/bin/bash -l                                                                                                                                                                                                     
php /path/to/script.php

こんなかんじにcron設定

5 10 * * * /path/to/script.sh

まぁ、cron内でPATHとかちゃんと設定してから呼べば問題ないとは思うのだけど。こっちの方が間違いなさそう。以前はこうやってたけどいつのまにか直接phpファイル実行するように書いてた。。。以上です