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の教科書・無料プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

【無料プレゼント】

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

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

詳細はこちらをクリック
【LaravelでWebアプリ開発します】

「会員制サイトを作ってほしい」「開発の時間がないから頼みたい!」

こんなご要望承り中。オンラインミーティングでも、ご相談承ります。

サンプルやお見積もり目安を見てみる

Twitter始めました。
40代からプログラミング!

コメント

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