我正在通过苏格兰威士忌在Laravel开展一个项目。我试图通过cronjobs自动化一些东西。问题是我的cron没有自动运行,但是当我php artisan schedule:run
它完全运行我的任务时。
应用/命令/ 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...
});
}
}
应用/控制台/ 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
答案 0 :(得分:2)
问题最终是使用相对路径与绝对路径。
使用定义为var/www/artisan
的相对路径将根据当前工作目录设置路径。这意味着App/Console/var/www/artisan
没有工匠的位置。
相反,使用/var/www/artisan
之类的绝对路径会将目录直接设置为/var/www/artisan
,这将是工匠的正确位置。
答案 1 :(得分:1)
* * * * * php -d register_argc_argv=On /var/www/artisan schedule:run