Laravel cron 没有自动运行
Laravel cron not working automatically
我正在 Laravel 通过 scotch box 做一个项目。我正在尝试通过 cronjobs 自动化一些事情。问题是我的 cron 不会自动 运行,但是当我 php artisan schedule:run
它 运行 完美地完成了我的任务。
app/commands/sendmail.php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Mail;
class sendmail extends Command {
protected $name = 'sendMail';
protected $description = 'A mail has been send ';
public function fire()
{
Mail::send([],[], function($message) {
//sendmail function that works...
});
}
}
app/console/Kernel.php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Illuminate\Support\Facades\DB;
use App\Battle;
use Carbon\Carbon;
use App\Console\Commands\Inspire;
use App\Commands\mails;
class Kernel extends ConsoleKernel
{
protected $commands = [
\App\Console\Commands\Inspire::class,
\App\Console\Commands\sendmail::class,
];
protected function schedule(Schedule $schedule)
{
$schedule->command('inspire')
->everyMinute();
$schedule->command('sendMail')
->everyMinute();
}
}
crontab -e
# m h dom mon dow command
* * * * * php var/www/artisan schedule:run
问题最终是相对路径与绝对路径的使用。
使用定义为var/www/artisan
的相对路径将根据当前工作目录设置路径。这意味着 App/Console/var/www/artisan
没有找到 artisan。
而不是使用绝对路径,例如 /var/www/artisan
会将目录直接设置为 /var/www/artisan
,这将是 artisan.
的正确位置
* * * * * php -d register_argc_argv=On /var/www/artisan schedule:run
我正在 Laravel 通过 scotch box 做一个项目。我正在尝试通过 cronjobs 自动化一些事情。问题是我的 cron 不会自动 运行,但是当我 php artisan schedule:run
它 运行 完美地完成了我的任务。
app/commands/sendmail.php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Mail;
class sendmail extends Command {
protected $name = 'sendMail';
protected $description = 'A mail has been send ';
public function fire()
{
Mail::send([],[], function($message) {
//sendmail function that works...
});
}
}
app/console/Kernel.php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Illuminate\Support\Facades\DB;
use App\Battle;
use Carbon\Carbon;
use App\Console\Commands\Inspire;
use App\Commands\mails;
class Kernel extends ConsoleKernel
{
protected $commands = [
\App\Console\Commands\Inspire::class,
\App\Console\Commands\sendmail::class,
];
protected function schedule(Schedule $schedule)
{
$schedule->command('inspire')
->everyMinute();
$schedule->command('sendMail')
->everyMinute();
}
}
crontab -e
# m h dom mon dow command
* * * * * php var/www/artisan schedule:run
问题最终是相对路径与绝对路径的使用。
使用定义为var/www/artisan
的相对路径将根据当前工作目录设置路径。这意味着 App/Console/var/www/artisan
没有找到 artisan。
而不是使用绝对路径,例如 /var/www/artisan
会将目录直接设置为 /var/www/artisan
,这将是 artisan.
* * * * * php -d register_argc_argv=On /var/www/artisan schedule:run