ラボ > サーバ:cron、OS:Linux

cronでPHPが実行されない

コンソールでPHPは実行されるけどcronだと実行されない。

作成日:2018-06-26, 更新日:2018-11-29

経緯

まずコンソールでPHPを実行。

php /〇〇〇/〇〇〇.php

これは実行できた。

次にcronに設定して実行。

1 * * * * php /〇〇〇/〇〇〇.php

動作せず。
一応、cornのログが「/var/log/cron」とかそんなのがあるとか・・・見ると実行されているような感じ。自信は無い。

自信が無いので・・・corn実行時にメールを飛ばしてもらう。

1 * * * * php /〇〇〇/〇〇〇.php | Mail xxx@example.com

メールは飛んできた。でも動作はしていないっぽい。

結論

phpのPATHの指定が必要

理由は知らないし、調べてもいない。とりあえず「cron実行時はPHPのPATHが通っていなかった」ってのが原因っぽい。

方法はいくつかあるみたい。
でも面倒なのでphpのpathを探して・・・下記のようにした。

1 * * * * /〇〇〇/php /〇〇〇/〇〇〇.php

PHPのPATHを探す

コンソールから「php 〇〇〇.php」で実行できるってコトは「php」のPATHが通っているってコト。
・・・ってコトは環境変数にPATHが指定されているはず。

コンソールから環境変数を確認

# env

PHPのPATHを探す。「PATH=〇〇〇:〇〇〇:〇〇〇」ってトコ。
「:」で一つのPATHだから、その中からPHPがありそうなヤツを探す。

あとは「cd 〇〇〇」して「php」がいるか確認すればOK。