teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

12

想定される結果追加。

2018/06/14 09:39

投稿

pip
pip

スコア19

title CHANGED
File without changes
body CHANGED
@@ -116,6 +116,17 @@
116
116
 
117
117
  ```
118
118
 
119
+ ## 想定される結果
120
+ 下記のように、storage/logs/laravel.logに追加される。
121
+ ```
122
+ [2018-06-14 14:30:02] staging.INFO: start scedule
123
+ [2018-06-14 14:30:02] staging.INFO: handle start
124
+ [2018-06-14 14:30:02] staging.INFO: end scedule
125
+ [2018-06-14 14:31:01] staging.INFO: start scedule
126
+ [2018-06-14 14:31:01] staging.INFO: handle start
127
+ [2018-06-14 14:31:01] staging.INFO: end scedule
128
+ ```
129
+
119
130
  ## 現象
120
131
 
121
132
  毎分指定しているスケジュールなのですが、指定したcommandが実行できていません。

11

laravelのバージョン追加

2018/06/14 09:39

投稿

pip
pip

スコア19

title CHANGED
File without changes
body CHANGED
@@ -145,6 +145,9 @@
145
145
 
146
146
 
147
147
  ## わかっている事
148
+ ### laravelのバージョン
149
+ Laravel Framework 5.5.40
150
+
148
151
  ### 環境
149
152
  OSは、「CentOS release 6.9」です。
150
153
  phpはxamppに入っているものを使用しています。

10

試した事追加。

2018/06/14 09:27

投稿

pip
pip

スコア19

title CHANGED
File without changes
body CHANGED
@@ -157,6 +157,7 @@
157
157
  projectユーザーのホームディレクトリは、/home/project/です。
158
158
 
159
159
  ## 試した事
160
+ ### commandで意図的にエラーを起こす
160
161
  もしかして、Commandにエラーがあってもエラーをログに吐かないのかと思い、意図的に構文エラーをして見ました。
161
162
 
162
163
  ```
@@ -173,4 +174,7 @@
173
174
  ```
174
175
 
175
176
  storageに書き出す部分のみの問題な気がします。
176
- 何故、scheduleのbeforeとafterは良くて、Commandが書き出せないのかわかりませんが…
177
+ 何故、scheduleのbeforeとafterは良くて、Commandが書き出せないのかわかりませんが…
178
+
179
+ ### storageディレクトリ以下のパーミッションを777にする。
180
+ laravel.logのパーミッションが元々「-rw-r--r--」で、projectユーザー(作業ユーザー)しかさわれない状態だったので、laravel.logのパーミッションを777にしてみましたが、logsに書き込まれませんでした。

9

試した事に追記

2018/06/14 06:41

投稿

pip
pip

スコア19

title CHANGED
File without changes
body CHANGED
@@ -172,4 +172,5 @@
172
172
  staging.ERROR: Parse error: syntax error, unexpected '$monolog' (T_VARIABLE) {"exception":"[object] (Symfony\Component\Debug\Exception\FatalThrowableError(code: 0): Parse error: syntax error, unexpected '$monolog' (T_VARIABLE) at /home/project/app/Console/Commands/Test.php:41)
173
173
  ```
174
174
 
175
- storageに書き出す部分のみの問題な気がします
175
+ storageに書き出す部分のみの問題な気がします
176
+ 何故、scheduleのbeforeとafterは良くて、Commandが書き出せないのかわかりませんが…

8

試した事追加

2018/06/14 06:14

投稿

pip
pip

スコア19

title CHANGED
File without changes
body CHANGED
@@ -142,6 +142,8 @@
142
142
  Running scheduled command: '/opt/lampp/bin/php-7.1.14' 'artisan' command:test > '/dev/null' 2>&1
143
143
  Running scheduled command: '/opt/lampp/bin/php-7.1.14' 'artisan' command:test > '/dev/null' 2>&1
144
144
  ```
145
+
146
+
145
147
  ## わかっている事
146
148
  ### 環境
147
149
  OSは、「CentOS release 6.9」です。
@@ -152,4 +154,22 @@
152
154
 
153
155
  ### Laravelのプロジェクトのディレクトリ
154
156
  projectユーザーのホームディレクトリ配下に展開しています。
155
- projectユーザーのホームディレクトリは、/home/project/です。
157
+ projectユーザーのホームディレクトリは、/home/project/です。
158
+
159
+ ## 試した事
160
+ もしかして、Commandにエラーがあってもエラーをログに吐かないのかと思い、意図的に構文エラーをして見ました。
161
+
162
+ ```
163
+ public function handle()
164
+ {
165
+ $monolog = \Log::getMonolog()
166
+ $monolog->info('handle start');
167
+ }
168
+ ```
169
+
170
+ その結果、下記のエラーが吐き出されるので、Command自体は実行されています。
171
+ ``` sh
172
+ staging.ERROR: Parse error: syntax error, unexpected '$monolog' (T_VARIABLE) {"exception":"[object] (Symfony\Component\Debug\Exception\FatalThrowableError(code: 0): Parse error: syntax error, unexpected '$monolog' (T_VARIABLE) at /home/project/app/Console/Commands/Test.php:41)
173
+ ```
174
+
175
+ storageに書き出す部分のみの問題な気がします、

7

Kernelのcommands変数に、classを定義する件を検証しましたが変わりませんでしたので追記。

2018/06/14 06:12

投稿

pip
pip

スコア19

title CHANGED
File without changes
body CHANGED
@@ -27,7 +27,7 @@
27
27
  * @var array
28
28
  */
29
29
  protected $commands = [
30
- //
30
+ \App\Console\Commands\Test::class,
31
31
  ];
32
32
 
33
33
  /**

6

タイトルを本文に寄せて修正

2018/06/14 05:43

投稿

pip
pip

スコア19

title CHANGED
@@ -1,1 +1,1 @@
1
- Laravelのスケジュールが実行されない
1
+ Laravelのスケジュールに設定したCommandが実行されない
body CHANGED
File without changes

5

状況をわかりやすくするために、ログ調整

2018/06/14 05:34

投稿

pip
pip

スコア19

title CHANGED
File without changes
body CHANGED
@@ -41,7 +41,15 @@
41
41
 
42
42
  $schedule->command('command:test')
43
43
  ->cron('* * * * * *')
44
+ ->before(function(){
45
+ $monolog = \Log::getMonolog();
46
+ $monolog->info('start scedule');
47
+ })
44
- ->timezone('Asia/Tokyo');
48
+ ->timezone('Asia/Tokyo')
49
+ ->after(function(){
50
+ $monolog = \Log::getMonolog();
51
+ $monolog->info('end scedule');
52
+ });
45
53
  }
46
54
 
47
55
  /**
@@ -114,10 +122,10 @@
114
122
 
115
123
  ### laravelログ
116
124
  ```
125
+ [2018-06-14 14:30:02] staging.INFO: start scedule
126
+ [2018-06-14 14:30:02] staging.INFO: end scedule
127
+ [2018-06-14 14:31:01] staging.INFO: start scedule
117
- [2018-06-14 12:26:01] staging.INFO: schedule start
128
+ [2018-06-14 14:31:01] staging.INFO: end scedule
118
- [2018-06-14 12:27:02] staging.INFO: schedule start
119
- [2018-06-14 12:28:01] staging.INFO: schedule start
120
- [2018-06-14 12:29:01] staging.INFO: schedule start
121
129
  ```
122
130
 
123
131
  ### cronログ

4

ソースの内容を詳細に記載。

2018/06/14 05:32

投稿

pip
pip

スコア19

title CHANGED
File without changes
body CHANGED
@@ -9,26 +9,103 @@
9
9
  ```
10
10
 
11
11
  ### Laravel側のスケジュール
12
+
13
+ Console/Kernel.php
12
14
  ``` php
15
+ <?php
16
+
17
+ namespace App\Console;
18
+
19
+ use Illuminate\Console\Scheduling\Schedule;
20
+ use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
21
+
22
+ class Kernel extends ConsoleKernel
23
+ {
24
+ /**
25
+ * The Artisan commands provided by your application.
26
+ *
27
+ * @var array
28
+ */
29
+ protected $commands = [
30
+ //
31
+ ];
32
+
33
+ /**
34
+ * Define the application's command schedule.
35
+ *
36
+ * @param \Illuminate\Console\Scheduling\Schedule $schedule
37
+ * @return void
38
+ */
13
- protected function schedule(Schedule $schedule)
39
+ protected function schedule(Schedule $schedule)
14
40
  {
15
41
 
16
- $monolog = \Log::getMonolog();
17
- $monolog->info('schedule start');
18
-
19
42
  $schedule->command('command:test')
20
- ->cron('* * * * * *')
43
+ ->cron('* * * * * *')
21
- ->timezone('Asia/Tokyo');
44
+ ->timezone('Asia/Tokyo');
22
45
  }
46
+
47
+ /**
48
+ * Register the commands for the application.
49
+ *
50
+ * @return void
51
+ */
52
+ protected function commands()
53
+ {
54
+ $this->load(__DIR__.'/Commands');
55
+
56
+ require base_path('routes/console.php');
57
+ }
58
+ }
59
+
23
60
  ```
24
61
 
25
62
  command:testは下記を実行します。
63
+ Console/Commands/Test.php
26
64
  ```
65
+ <?php
66
+
67
+ namespace App\Console\Commands;
68
+
69
+ use Illuminate\Console\Command;
70
+
71
+ class Test extends Command
72
+ {
73
+ /**
74
+ * The name and signature of the console command.
75
+ *
76
+ * @var string
77
+ */
78
+ protected $signature = 'command:test';
79
+
80
+ /**
81
+ * The console command description.
82
+ *
83
+ * @var string
84
+ */
85
+ protected $description = 'Command Test';
86
+
87
+ /**
88
+ * Create a new command instance.
89
+ *
90
+ * @return void
91
+ */
27
- public function handle()
92
+ public function __construct()
28
93
  {
94
+ parent::__construct();
95
+ }
96
+
97
+ /**
98
+ * Execute the console command.
99
+ *
100
+ * @return mixed
101
+ */
102
+ public function handle()
103
+ {
29
104
  $monolog = \Log::getMonolog();
30
105
  $monolog->info('handle start');
31
106
  }
107
+ }
108
+
32
109
  ```
33
110
 
34
111
  ## 現象

3

ログ情報を追加

2018/06/14 05:24

投稿

pip
pip

スコア19

title CHANGED
File without changes
body CHANGED
@@ -50,6 +50,13 @@
50
50
  Jun 14 13:00:01 ik1-325-22848 CROND[6649]: (root) CMD (/opt/lampp/bin/php /home/project/artisan schedule:run >> /dumplog.txt)
51
51
  ```
52
52
 
53
+ ### cronで実行したタスクのログ(dumplog.txt)
54
+ 毎分出力する設定にしていますので、指定したスケジュールで、実行自体はしているのはわかります。
55
+ ```
56
+ Running scheduled command: '/opt/lampp/bin/php-7.1.14' 'artisan' command:test > '/dev/null' 2>&1
57
+ Running scheduled command: '/opt/lampp/bin/php-7.1.14' 'artisan' command:test > '/dev/null' 2>&1
58
+ Running scheduled command: '/opt/lampp/bin/php-7.1.14' 'artisan' command:test > '/dev/null' 2>&1
59
+ ```
53
60
  ## わかっている事
54
61
  ### 環境
55
62
  OSは、「CentOS release 6.9」です。

2

情報を追加しました。

2018/06/14 04:09

投稿

pip
pip

スコア19

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
  ### cron.dで設定しているタスク
6
6
  rootのcron.dに下記を設定しています。
7
7
  ```cron.d
8
- * * * * * root /opt/lampp/bin/php /home/project/artisan schedule:run >> dump_cronlog.txt
8
+ * * * * * root /opt/lampp/bin/php /home/project/artisan schedule:run >> /dumplog.txt
9
9
  ```
10
10
 
11
11
  ### Laravel側のスケジュール
@@ -35,6 +35,7 @@
35
35
 
36
36
  毎分指定しているスケジュールなのですが、指定したcommandが実行できていません。
37
37
 
38
+ ### laravelログ
38
39
  ```
39
40
  [2018-06-14 12:26:01] staging.INFO: schedule start
40
41
  [2018-06-14 12:27:02] staging.INFO: schedule start
@@ -42,6 +43,12 @@
42
43
  [2018-06-14 12:29:01] staging.INFO: schedule start
43
44
  ```
44
45
 
46
+ ### cronログ
47
+ 取得時間に際がありますが、cronで、スケジュールの実行自体はされています。
48
+ ```
49
+ Jun 14 12:59:01 ik1-325-22848 CROND[6628]: (root) CMD (/opt/lampp/bin/php /home/project/artisan schedule:run >> /dumplog.txt)
50
+ Jun 14 13:00:01 ik1-325-22848 CROND[6649]: (root) CMD (/opt/lampp/bin/php /home/project/artisan schedule:run >> /dumplog.txt)
51
+ ```
45
52
 
46
53
  ## わかっている事
47
54
  ### 環境

1

問題はCronの設定ではなく、Laravelのタスクが実行されていない事なので内容自体を変更します。

2018/06/14 04:04

投稿

pip
pip

スコア19

title CHANGED
@@ -1,1 +1,1 @@
1
- cronが実行すると勝手に書き換わる現象が解決できない
1
+ Laravelのスケジュールが実行されない
body CHANGED
@@ -3,34 +3,44 @@
3
3
  タスクは下記のように指定していますが、Laravelで設定しているcommandが実行されません。
4
4
 
5
5
  ### cron.dで設定しているタスク
6
+ rootのcron.dに下記を設定しています。
6
7
  ```cron.d
7
- * * * * * root /opt/lampp/bin/php /home/project/artisan schedule:run >> /dev/null 2>&1
8
+ * * * * * root /opt/lampp/bin/php /home/project/artisan schedule:run >> dump_cronlog.txt
8
9
  ```
9
10
 
10
11
  ### Laravel側のスケジュール
11
12
  ``` php
12
13
  protected function schedule(Schedule $schedule)
13
14
  {
15
+
16
+ $monolog = \Log::getMonolog();
17
+ $monolog->info('schedule start');
18
+
14
19
  $schedule->command('command:test')
15
- ->dailyAt('3:00')
20
+ ->cron('* * * * * *')
16
- ->timezone('Asia/Tokyo');
21
+ ->timezone('Asia/Tokyo');
17
22
  }
18
23
  ```
19
24
 
25
+ command:testは下記を実行します。
26
+ ```
27
+ public function handle()
28
+ {
29
+ $monolog = \Log::getMonolog();
30
+ $monolog->info('handle start');
31
+ }
32
+ ```
20
33
 
21
34
  ## 現象
22
- 上記タスクに登録したコマンドを手動で入力すると次のように変わってしまいます。
23
35
 
24
- ```sh
25
- $ /opt/lampp/bin/php /home/project/artisan schedule:run
36
+ 毎分指定しているスケジュールなのですが、指定したcommandが実行できていません。
26
- Running scheduled command: '/opt/lampp/bin/php-7.1.14' 'artisan' command:test > '/dev/null' 2>&1
27
- ```
28
37
 
29
- 「Running scheduled command」に出力されるコマンドを入力すると実行できません。
30
- ``` sh
31
- $ /opt/lampp/bin/php-7.1.14 artisan command:test
32
- Could not open input file: artisan
33
38
  ```
39
+ [2018-06-14 12:26:01] staging.INFO: schedule start
40
+ [2018-06-14 12:27:02] staging.INFO: schedule start
41
+ [2018-06-14 12:28:01] staging.INFO: schedule start
42
+ [2018-06-14 12:29:01] staging.INFO: schedule start
43
+ ```
34
44
 
35
45
 
36
46
  ## わかっている事
@@ -41,21 +51,6 @@
41
51
  ### cronの状況
42
52
  cronのlogを見ると、毎分タスクが実行されているようなので、crontabが止まっている訳ではなさそうです。
43
53
 
44
- ### commandの実行
45
- 下記のコマンド、
46
- ``` sh
47
- $ cd /home/project/
48
- $ php artisan command:test
49
- ```
50
-
51
- もしくは、
52
- ``` sh
53
- $ /opt/lampp/bin/php-7.1.14 /home/project/artisan command:test
54
- ```
55
-
56
- 上記で、想定した結果が出力される事は確認しました。
57
- cronで実行されるときに、'artisan'の部分が書き換わる事だけが問題です。
58
-
59
54
  ### Laravelのプロジェクトのディレクトリ
60
55
  projectユーザーのホームディレクトリ配下に展開しています。
61
56
  projectユーザーのホームディレクトリは、/home/project/です。