x-serverでのcron実装方法【laravel】

Pocket

自分が実装する際になかなか良い情報に出会えずかなり時間がかかったので備忘録も兼ねて残しておきます。
 
今回はフレームワークにlaravelを使用したCRON実装法を解説していきます。
 

まず初めにLaravelのドキュメントでは、以下のように設定すれば良いと書いています。

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

しかし、これをx-serverのcron設定コマンドに書いたところでなにも動きません。。。

x-serverではこのような記述はできないようです。。。

じゃあどうするのって躓いているあなたに向けて実装法を解説していきます。
 

3ステップでめちゃめちゃ簡単です。

 

1.シェルスクリプトの作成

まずはじめに以下のコードを書いたファイルを作成します。

#!/bin/sh
/usr/bin/php7.3/home/サーバーID/独自ドメイン名/laravel/artisan schedule:run

laravelディレクトリ直下に作成したファイルを置きます。

※phpのバージョンは環境に合わせて適宜変更してください。

拡張子が.shであればファイル名は何でもいいです。

 

2.shファイルの権限を755に変更

次に権限を変更しないとx-server側でCRONを実行してくれません。

以下のコマンドで権限を755に変更できます。

chmod 755 sh_test.sh 

実行できたら以下のコマンドで権限の確認ができます。

ls -l sh_test.sh

以下リンクに詳細が書いてあるので参考にしてみてください。

パーミッションを755に(chmod)

 

3.x-server側でのCRON設定

最後はCRONの設定をするのみです。

以下を参考に設定してみてください。

/home/サーバーID/独自ドメイン名/laravel/sh_test.sh

設定後はアドレスを追加し実行結果を確認してみてください。(無料会員はメール通知機能を使えません。)

以上がx-serverでCRONを実装する方法でした。

 

追記

うまく動かない場合はステップ1でphp7.3の後ろに半角スペースを空けて再度試してみてください。

#!/bin/sh
/usr/bin/php7.3 /home/サーバーID/独自ドメイン名/laravel/artisan schedule:run

私は半角スペースなくでも動作しましたが、これでうまくいったと連絡を受けました事例もありました。

kawa_matsuさんありがとうございました!!