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モジュール、pear、phpファイルのフルパスを記述する必要があった。
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 &
以上です。