🧊

ハッスルサーバーのcronでPHPファイルを動かすときの注意

わかんないことはネットで調べれば良いやーと、思ってた時期が私にもありました・・。

確かに大半のことは調べればわかります。
ただ、その情報の真偽や、ほんとうに同じシチュエーションのものかなど、確認すべき点を忘れがちになります。

これは最近の自分への戒めじゃー・・・・。

というわけで、Twitterbotを作った際に、ハッスルサーバーのcronでPHPを動かそうとしてハマった点、メモっときます。

やること

  1. 動かすプログラムを作る
  2. cronで動かすシェルを作る
  3. 管理画面で設定する

リストとしては簡単なのにね・・。
1は割愛します。
今回は、アクセスするとつぶやく「phpのファイル」を動かしたいケースです。

シェル:.shファイルを作る

最初の勘違い。

ハッスルサーバーにログインすると、←メニューの中に「cronの設定」っていうのがあります。
おもむろに設定するリンクをクリック。

起動させたい時間や条件を設定。
そして最後に、「実行するコマンド」を設定します。

実行するコマンドは/home/(ユーザーID)/ から始まるものか /usr/local/bin などから始まるコマンド名を指定してください

結論から言うと、ここに直接「動かしたいPHPファイルのパス」を書いてもダメです。
ほんと無知ってこわい!

完全な先入観で、なんでもOKかと思ってたのですが、cronで何かをどうにか定期的に動かしたい場合、その「何かをどう動かすか」を記述したファイルが必要とのこと。
それがシェルと呼ばれる拡張子が.shのファイル、と。

そしてそのシェルの書き方にもハマった!

最終的に、こう書いて動作してくれました。

#!/bin/sh
cd /home/[自分のID]/public/www/[ファイルを置いてるディレクトリ] ; /usr/local/bin/php ./[動かしたいやつ.php]
exit
www/[ファイルを置いてるディレクトリ]/**.sh <- シェル
                   /**.php <- 動かしたいやつ

シェル自体、本来はwww直下に置かないべきものらしいので、他のケースは適宜対応すべし。
ここで記述すべきは「動かしたい対象ファイルの情報」、ってことを覚えてればよさそう。

これをそのままコピペする場合、ディレクトリ構成もあわせてください。

1・3行目はお決まりなので深追いしません。
問題は2行目!

  1. 動かしたいファイル置き場へcd
  2. 動かすのはPHPなのでそれを指定(パスを通す?
  3. cdしてるので、相対パスで動かすファイルを指定

もしかしたら2行目って、

/usr/local/bin/php /home/[自分のID]/public/www/[ファイルを置いてるディレクトリ]/[動かしたいやつ.php]

って書けたりするんかな?
面倒で試せない・・・。

改行コードでもハマる

UNIXなので、改行コードは、「LF」にしてください。

管理画面で設定

今回のケースは、上述の通り動かしたいphpと同じところに。

パーミッションでもハマる

初期状態だと動かないので、シェルファイルのパーミッションは、705にしてください。
調べると700でもOKってチラホラですが、動いてくれませんでした・・。

はてさて、これでやっと管理画面メニューのところに戻れます。
いわれてるとおり、指定。

/home/[自分のID]/public/www//[ファイルを置いてるディレクトリ]/[動かしたいやつを動かすシェル.sh]

これでOKです。

動かない場合

これはもうコツコツとデバッグするしかないと思います。
コツ?として、
cronの実行結果(エラー情報とか)は、メールで受信できます。
postmaster@・・・ってアドレスを設定できるので、そこを要確認。

コマンドラインでシェル起動とかできないので、最短の15分間隔で設定して、ひたすら試すしか無いです・・。

まとめるとー、

  • .shファイルを忘れずに!
  • 改行コードをLFで。
  • 2行目のパスの書き方注意!
  • パーミッションしっかり!


ゆく年どせいさんbot (yukutoshi_bot)をどうぞよろしく。

もう運用してません。。