質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2236閲覧

Mac laravel/mamp環境 でcronでの定期スクリプトが実行されない

ink88882

総合スコア24

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/08/24 04:35

お世話になります。

【質問内容】
Mac os 10.12環境にてlaravelを利用しており、cronでの定期実行を行おうとしております。

app/console/command/TestCommnad.phpに登録したコマンドの手動での実行をした際には正常に処理されますが、
app/Http/Kerner.phpに記載したcronの定期実行が処理されません。(1行ログ出力を行う処理ですが、何も出力されない状態です。)

【環境】
Mac os 10.12
Laravel Framework 5.8.31
php PHP 7.3.6
mampにて実行

【参考にした情報】
https://readouble.com/laravel/5.8/ja/scheduling.html
https://blog.capilano-fw.com/?p=3679
https://reffect.co.jp/laravel/laravel-task-schedule-cron

【行ったこと/コード】
プロジェクトフォルダまで移動し
crontab -e で

terminal

1* * * * * cd /Applications/MAMP/htdocs/アプリ名 && php artisan schedule:run 1>> /dev/null 2>&1

を設定しました。

また、commandの中にTestCommnad.phpというファイルartisanで作り、'command:testcommand';というコマンド名(ログにテキストを1行出すのみ)を作りました。
kerner.phpでは、それを毎分実行するように記載しました。
laravelアプリ内のkerner.phpとTestCommnad.phpのコードの中身は以下です。

app/console/command/TestCommnad.phpの中身

php

1<?php 2 3namespace App\Console\Commands; 4 5use Illuminate\Console\Command; 6use Illuminate\Support\Facades\Log; 7 8 9class TestCommand extends Command 10{ 11 /** 12 * The name and signature of the console command. 13 * 14 * @var string 15 */ 16 //コマンド名を設定 17 protected $signature = 'command:testcommand'; 18 19 /** 20 * The console command description. 21 * 22 * @var string 23 */ 24 //コマンドの説明 25 protected $description = 'testcommandのコマンド説明'; 26 27 /** 28 * Create a new command instance. 29 * 30 * @return void 31 */ 32 public function __construct() 33 { 34 parent::__construct(); 35 } 36 37 /** 38 * Execute the console command. 39 * 40 * @return mixed 41 */ 42 public function handle() 43 { 44 // ここに処理を記述 45 logger()->info('testcommand実行!!.'); 46 47 } 48}

app/Http/Kerner.phpの中身。

php

1<?php 2 3namespace App\Console; 4 5use Illuminate\Console\Scheduling\Schedule; 6use Illuminate\Foundation\Console\Kernel as ConsoleKernel; 7 8class Kernel extends ConsoleKernel 9{ 10 /** 11 * The Artisan commands provided by your application. 12 * 13 * @var array 14 */ 15 protected $commands = [ 16 \App\Console\Commands\TestCommand::class, //コマンドの登録 17 ]; 18 19 /** 20 * Define the application's command schedule. 21 * 22 * @param \Illuminate\Console\Scheduling\Schedule $schedule 23 * @return void 24 */ 25 protected function schedule(Schedule $schedule) 26 { 27 //スケジュールの登録 28 $schedule->command('command:testcommand')->everyMinute(); 29 30 } 31 // $schedule->command('inspire') 32 // ->hourly(); 33 34 35 /** 36 * Register the commands for the application. 37 * 38 * @return void 39 */ 40 protected function commands() 41 { 42 $this->load(__DIR__.'/Commands'); 43 44 require base_path('routes/console.php'); 45 } 46} 47 }

【動作確認】
・ターミナルでcrontab-lで確認 → 設定済みの下記処理が表示されます。

terminal

1* * * * * cd /Applications/MAMP/htdocs/アプリ名 && php artisan schedule:run >> /dev/null 2>&1

・手動で動作確認
php artisan command:testcommand をターミナルで実行 → 行うたび、laravelアプリ/storage/logs の今日の日付のファイルに下記ログが記載されます。

php

1[2019-08-24 03:40:54] local.INFO: testcommand実行!!. 2[2019-08-24 04:19:17] local.INFO: testcommand実行!!.

また、試しに
cd /Applications/MAMP/htdocs/cryptoapp && php artisan schedule:run >> /dev/null 2>&1
とターミナル上で直に入力し実行しても同じように上記のログが出力されます。

ーーーーーーーーーーーーーーーー

以上の状態ですが、mampサーバーの起動、laravelのphp artisan serve でのアプリ起動をしている状態でも、logファイルに自動での実行結果が反映されません。(logファイルに何も出てこない状態です)

手動実行は意図通りの動作となるので、cronの自動の処理が上手くいかないようなのですが、
確認すべきポイント、見落としていそうなポイントなどあれば、アドバイスをいただけますと幸いです。
何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/24 11:56

cron が実行エラーになってるだけじゃねの
guest

回答1

0

自己解決

原因は不明ですが、本番のサーバー環境では正常に動作したためクローズいたします。
localの何らかの個別環境の可能性がありそうです。

投稿2019/11/07 16:41

ink88882

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問