質問編集履歴
12
想定される結果追加。
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のバージョン追加
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
試した事追加。
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
試した事に追記
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
試した事追加
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を定義する件を検証しましたが変わりませんでしたので追記。
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
タイトルを本文に寄せて修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Laravelのスケジュールが実行されない
|
1
|
+
Laravelのスケジュールに設定したCommandが実行されない
|
body
CHANGED
File without changes
|
5
状況をわかりやすくするために、ログ調整
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
|
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
ソースの内容を詳細に記載。
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
|
-
|
43
|
+
->cron('* * * * * *')
|
21
|
-
|
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
|
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
ログ情報を追加
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
情報を追加しました。
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 >>
|
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のタスクが実行されていない事なので内容自体を変更します。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
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 >>
|
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
|
-
|
20
|
+
->cron('* * * * * *')
|
16
|
-
|
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
|
-
|
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/です。
|