Laravel エックスサーバーにcronを設定する時のディレクトリエラー対策とコマンドの意味

Laravel自動処理
スポンサーリンク

エックスサーバーでcronを設定してLaravelプロジェクトを自動処理するとき

「そのようなファイルやディレクトリはありません」

「 ディレクトリではありません」

というエラーが出たときは、エックスサーバーのCron設定のコマンドに下記の問題があるかもしれません。

  • 必要なスペースが入っていない
  • Cron設定の「コマンド」にPHPのバージョンが入っていない
  • PHPについて書く場所が間違えている

コマンドの部分が正しく入っているか、チェックしてみてください。

じゅんこ
じゅんこ

わたしも、このエラーに悩みました。

Cron設定コマンドはネット上に色々な書き方が紹介されていますが、残念ながら、このトラブルを解決できる方法が見つけられず。

わたしは公式マニュアルを参考に、下記のようにコマンドを作成したところ、トラブルを解決できました。

cd /home/プロジェクトのパス/ && /usr/bin/phpのバージョン artisan コマンド >> /dev/null 2>&1

Laravelのcronコマンド例)

プロジェクトのパスとPHPのバージョンの調べ方は、下記記事にて解説しています。

Cron設定のコマンドについて解説

なぜこのようなコマンドになるのか、解説していきます。

Laravelの公式マニュアルには、Cron設定について、下記のように書かれています。

スケジューラを使用するには、サーバに以下のCronエントリを追加するだけです。

 

*参考:https://readouble.com/laravel/8.x/ja/scheduling.html

Laravelのコマンドの最初の*****部分は、時間設定。

エックスサーバーでは時間設定は別途入力するので、この部分はコマンドに入れません。

ただ注意点として、エックスサーバーでは、PHPのバージョンを入れる必要があります。

エックスサーバーのCronに関するマニュアルには、下記のように書かれています。

PHPやPerlなどのスクリプトをCronで実行する際、 コマンドパスもあわせて記述してください。(略)

(例)abc.phpをPHP 7.2 で実行する場合
/usr/bin/php7.2 /home/サーバーID/独自ドメイン名/public_html/abc.php

*参考:https://www.xserver.ne.jp/manual/man_program_cron.php

そこで、Laravelマニュアルに書かれたコマンドに、PHPのバージョン情報を入れます。

すると今回ご紹介したようなCron設定コマンドになるわけです。

Laravelのcronコマンド例)

Cron設定のコマンドについて、さらにつっこんで解説

ここから先は、Cronコマンドの >> 以下の部分について、解説していきます。

下記の赤い部分ですね。気になる方だけ、お読みください。

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

まず【>>】 は、記録対象のファイルに追加していく、という意味。

そのあとに続く【 /dev/null】 は、特殊な動作をするファイル名で、具体的には、画面出力(表示)が全て消えます。

そのあとの数字【2>&1】ですが、1は標準出力で、2はエラー出力の意味。

2>&1と入れることでと、エラー出力も標準出力と一緒の出力先にするという意味になります。

総合すると、赤色の部分は、すべての出力(表示)を捨てる、という意味になります。

つまり、コマンドのたびに画面出力が出ないように、赤色部分の処理が入っているわけです。

・・・と解説しましたが、実はわたしは最初、この赤色の部分の意味についてはよく理解できませんでした。

そこで、熟練プログラマの旦那に聞いてみたところ、上記の答えがあっさり返ってきたのです。

じゅんこ
じゅんこ

ちなみに、この知識って、常識な感じ?

ひつじプログラマ
ひつじプログラマ

うーん。そんなことないよ。

まあ、UNIXが分かる人とかは、知っているかも。

じゅんこ
じゅんこ

そうかぁ。

Cronコマンド、1行だけですが、なかなか奥深いですね。

Laravel自動処理

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中!
会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

【個別サポート実施中】

「本ブログに記載の方法を試してみたけれど、うまくいかない」「コードを見てほしい」という方のために、有償でメールサポートいたします。以下のボタンをクリックして相談フォームにアクセスして下さい。

詳しく見る

Twitter始めました。
スポンサーリンク
40代からプログラミング!

コメント

タイトルとURLをコピーしました