気になったことはなんでも調べてメモするブログ
  1. プログラミング
  2. 136 view

スターサーバーのCRON設定しても動かない時に試すこと

Last updated: 2020/03/11

定期的にPHPを実行したくて、スターサーバーのCRON機能を試そうとしたんですが、なかなかうまくいきませんでした。
成功するまでにやったことをここにまとめます。

正しいソースコードを用意する

次の2点について、ソースコードを見直しましょう。

  1. 最初に「#!/usr/bin/php」と記載しておく
  2. 相対パスを使用しない

修正例

下はもともと書いていた、TwitterOAuthを利用するコードの冒頭です。

<?php
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

$keys = require('keys.php');

これを次のように修正しました。

#!/usr/bin/php
<?php
$path = realpath(dirname(__FILE__));

require "${path}/twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

$keys = require($path.'/keys.php');

実行権限を与える

CRONで呼び出したいphpファイルのパーミッションを確認しましょう。
下の図のように、実行権限を付与しておく必要があります。

CRONを追加する

CRON設定はサーバー管理ツールで行えます。

「CRON追加」を選び、まず実行したい日時を設定しましょう。

例) 毎日 15:20
分=20 時=15 日=* 月=* 曜日=*

例) 毎週日曜日 8:00 と 8:30
分=0,30 時=8 日=* 月=* 曜日=0

「コマンド」の入力方法

「コマンド」の欄には、以下の構成で記入する必要があります。

(コマンドパス)(半角スペース)(ソースファイルの絶対パス)

まずコマンドパスですが、これは「サーバー情報」に載っているものを利用します。

任意のPHPのバージョン(CGI)を選んで、「実行パス」をコピーしておきましょう。

ソースファイルの絶対パスは、必ず下のようになります。
これはFTP等でソースファイルをアップロードする際のルートフォルダのパスです。

/home/(サーバーID)/(ドメイン)/public_html/

ちなみにサブドメイン下だとこうなります。

/home/(サーバーID)/(ドメイン)/public_html/(サブドメイン)/

(サーバーIDはサーバー管理ツールの一番上に表示されてます)

例えば一番上の階層に「cron」というフォルダを作って「sample.php」をアップロードすると、絶対パスは次のようになります。

/home/(サーバーID)/(ドメイン)/public_html/cron/sample.php

「コマンド」の例

/usr/bin/php7.3-cgi /home/(サーバーID)/(ドメイン)/public_html/cron/sample.php

まとめ

  • ファイルの実行権限はつけ忘れがちなので気をつけましょう
  • requireなどの参照先は全て絶対パスで記載し、動作確認をしておきましょう
  • CRONの設定日時が正しいかチェックしましょう
  • CRONのコマンド、とくに絶対パスが正しいかチェックしましょう




プログラミングの最近記事

  1. スターサーバーのCRON設定しても動かない時に試すこと

  2. 【フリーウェア】CSVファイルをJSの連想配列に書き換える『csv2js』

  3. シェルスクリプトでCSVを解析してみた

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP