ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

PHPで作成したバッチをシェル、Cronより呼び出す

タイトル通り、PHPで作成したバッチをシェルを経由?してCronより呼び出しました。
PHP単体では動くものが、Cronから呼び出したら動かない事象に悩まされましたが
なんとか動くようになったので、メモとして残しておきます。

◆ファイル構成
・xxx.php ・・・ PHPで記述したバッチ処理
・xxx.sh ・・・ PHPを起動するためのシェル
・cron ・・・ OS起動時にシェルを起動するように設定


◆実行権限の付与
xxx.php、xxx.shの実行権限を確認し、実行する権限を付与する。

ls -l xxx.php ・・・実行権限確認。「-x」が無ければ、以下のコマンドで付与する。
chmod +x xxx.ph ・・・実行権限付与。

xxx.shに対しても、上記と同じ手順で権限を付与する。


◆シェル
cronより起動する場合は、phpモジュール、pearphpファイルのフルパスを記述する必要があった。
cronより起動時と、コマンドからシェルを直接起動する場合とでは、カレントディレクトリが異なるため。

#!/bin/sh
/usr/local/bin/php -d include_path='.:/usr/local/lib/php/PEAR' /usr/batch/xxx.php
exit 0


◆cronについて
OSの起動時にシェルを起動する。別タスクで起動するため、&を付与している。

@reboot /usr/batch/xxx.sh &


以上です。