【ネットオウル】cronでphpを自動実行する際の注意2つ

製作 プログラム

2016/07/05(火)

ネットオウルのレンタルサーバーでcron設定

cronとはお好みの処理を予約実行する事ができるサーバーの機能です。このcronはだいたいのレンタルサーバーで使用する事が出来ます。

ミニバードやファイアバードで有名なネットオウルのレンタルサーバーでもcronの設定して、好きな時間に好きなプログラムを実行させることができます。また、ネットオウルではcron設定用のブラウザ設定画面が用意されており、比較的簡単に設定する事が出来ます。

なのですが、このcron設定についてのネットオウル公式ページの通り設定しても上手くいかないコトが多いです。

なので今回はネットオウルでphpファイルをcronで自動実行するケースを例に挙げて、その中で特に陥りやすいcronが動作しなくなる設定ミスを2つ紹介したいと思います。

ネットオウルでcron設定する際に気をつけること2つ

  1. phpファイルのパス(url)について
  2. 「/usr/bin/php」の記述について

①phpファイルのパス(url)について

phpファイルのパス設定に注意が必要です。

まずcronにphpファイルを設定する前段階として自動実行したいphpファイルをレンタルサーバーにアップロードする必要があります。これはお使いのftpソフトで行ってください。

次にcronにそのファイルの場所を教えてあげる必要があります。この場所を教えてあげることをパス設定といって、ネットオウルの場合は設定画面の「コマンド」欄でパス設定を行います。

そしてこのパス設定にはネットオウルの場合「サーバーID」と「ドメイン名」の二つが必要になります。

phpファイルのパス設定に必要なものは以下の二つ

  • サーバーID(ネットオウルのサーバー管理画面にログインすると表示されます)
  • ドメイン名(~~.comみたいなやつ)
パスの設定方法

/home/サーバーID/ドメイン名/public_html/phpファイル名

パスの設定は上記の形式で行います。以下に例を挙げます。

パスの設定例①

例えば「サーバーID」がanpan、「ドメイン名」がkoshian.comだった場合、そして実行したいphpのファイル名がazuki.phpで「/」直下にアップロードした場合、cronに設定するパスは以下のようになります。

/home/anpan/koshian.com/public_html/azuki.php

パスの設定例②

例えば「サーバーID」がanpan、「ドメイン名」がkoshian.comだった場合、そして実行したいphpのファイル名がazuki.phpで「/」直下に「mochimochi」フォルダを作成し、その中にazuki.phpをアップロードした場合は以下になります。

/home/anpan/koshian.com/public_html/mochimochi/azuki.php

public_htmlについて

「public_html」を必ず書いてください。ftpでファイルをアップロードする際、ftpソフトには「/」と表示されていても実際のサーバー上では「/home/anpan/koshian.com/public_html/」にアップロードしています。

「public_htmlなんて見たことないし要らないな」と省いちゃうと「No input file specified.」や「Could not open input file」というエラーになり、phpファイルが実行されません。

②「/usr/bin/php」の記述について

公式ホームページのcron設定方法のコマンドの欄には先ほど書いた、パス設定だけ書かれていますが、実際にはこれだけでは動きません。公式サイトが少し不親切ですね。

コマンド欄に「/usr/bin/php○○」の記述をしてください。書く位置は先ほど設定したパス設定より前で一番最初に記述してください。

/usr/bin/php○○」の○○の部分にはphpのバージョン番号が入ります。ご自身のレンタルサーバのphpバージョンはサーバー管理ツールの「PHPバージョン設定」より確認でき、同じくサーバー管理ツールの「サーバー情報→コマンドパス情報」より先ほど確認したphpのバージョンだと○○がどうなるのか見てそれに代えてください。

設定例

例えばphp5.6を使用している場合

/usr/bin/php5.6 /home/anpan/koshian.com/public_html/azuki.php

例えばphp5.1を使用している場合

/usr/bin/php /home/anpan/koshian.com/public_html/azuki.php

「No such file or directory」

この/usr/bin/phpの設定を失敗している場合は「No such file or directory」というエラーが発生し、phpファイルが実行されません。

phpファイルに「#!/usr/bin/php」の記述がある場合

ウェブ上で手に入れたphpファイルですと、あらかじめphpファイルの一行目に「#!/usr/bin/php」もしくは「#!/usr/local/bin/php」の記述がある場合があります。これは上記の「コマンド」欄の設定と同じですので、この記載がある場合は「コマンド」欄には「/usr/bin/php○○」のは要りません。

ただ、もし動かないのであればphpファイル側の一行目を消して、「コマンド」側に「/usr/bin/php○○」を追加してみてください。

cronで予約実行していろいろな処理を自動化しよう!

いかがでしたか?

今回はネットオウルに関して起こるcron設定の注意点についてphpファイルをcronに設定する例を挙げて2つ紹介しました。

もちろんphpだけでなく他のcgiでも同じですので、置き換えて読んでいただければと思います。

rssの受信やメルマガの配信など、cronを使えばカンタンに自動化できますので一度試してみはいかがでしょうか。