cronの設定にも一苦労。
マニュアルには、
3-3. cronの設定
[設定例]/etc/crontab に以下を記述。
# 6時にメールを送信&20分毎にRSS更新
00 6 * * * root sh OPENPNE_DIR/bin/tool_send_dairy_news.cron OPENPNE_DIR/bin/ [bin_path]/php
00 6 * * * root sh OPENPNE_DIR/bin/tool_send_birthday_mail.cron OPENPNE_DIR/bin/ [bin_path]/php
00 6 * * * root sh OPENPNE_DIR/bin/tool_send_schedule_mail.cron OPENPNE_DIR/bin/ [bin_path]/php
*/20 * * * * root sh OPENPNE_DIR/bin/tool_rss_cache.cron OPENPNE_DIR/bin/ [bin_path]/php
[bin_path]はphpをインストールしたbinディレクトリ(例えば、/usr/local/bin)です。
とあるのだが、クララオンラインWebminのcron設定は、crontabに書き込むのではなく、webminで登録できる。
これは、これで楽で良いのだが、設定が若干異なる。
まずは、OPENPNE_DIRディレクトリーは、
/var/www/html/sns/
でOK。shコマンドは必要ないようだ。
.cronで止めて入力してみると、エラーがでる。
例えば、tool_send_dairy_news.phpというコマンドがありませんとでる。
tool_send_dairy_news.cronを見てみると、
#! /bin/sh
cd $1
$2 tool_send_dairy_news.php > /dev/null
となっている、単純な命令文。tool_send_dairy_news.phpが見つからないというから、
#! /bin/sh
cd $1
$2 /var/www/html/sns/bin/tool_send_dairy_news.php > /dev/null
に変更。やっぱり動いた。
※実行環境がcron依存のため、シェルコマンドでパスをわたしてやらなければならない。
しかし、またエラー。phpを理解していないようだ。
そこで、ウェブで調べてみると、どうも、これはcronコマンドではなく、無理矢理phpを走らせるというやり方らしく、
※シェルスクリプトから起動させるのは常套手段。PHPをコマンドとして使用するのがある意味無理矢理という意味らしい。通常だと、perlやRuby等を使うのが普通らしい。
.cronの後に、phpのありかを宣言してやらなくてはならないらしい。
※上記にも書いたとおり、cron依存であるため、環境変数をわたす必要があるので、phpのパスをわたすのは必須。本来あるパラメーターを略してはいけないということ。
なので、
/var/www/html/sns/bin/tool_send_dairy_news.cron /var/www/html/sns/bin/ usr/bin/php
という命令文になる。とりあえず、動いた。