Skip to main content

Laravel Scheduler Not Running – 9 Fixes for Cron Job Issues

Laravel Scheduler not running? Fix cron job issues, schedule:run problems, queue failures, and task execution errors with this complete step-by-step debugging guide.

4 min read
Laravel Scheduler Not Running – 9 Fixes for Cron Job Issues

Introduction to Laravel Scheduler Not Running

If you're dealing with the frustrating issue of Laravel Scheduler Not Running, you're not alone. Many developers face this problem when scheduled tasks like emails, backups, or reports fail to execute.

Laravel’s scheduler is powerful, but it depends heavily on proper server configuration. If something is slightly off, your scheduled tasks simply won’t run.

In this guide, you’ll learn why Laravel scheduler fails and how to fix it step by step.


How Laravel Scheduler Works

Understanding how the scheduler works will help you debug faster.

What is Laravel Scheduler

Laravel Scheduler allows you to define scheduled tasks in one place:

protected function schedule(Schedule $schedule)
{
    $schedule->command('emails:send')->daily();
}

Instead of managing multiple cron entries, Laravel uses one cron job.


Role of Cron Job

Laravel relies on this cron job:

* * * * * php /path-to-project/artisan schedule:run >> /dev/null 2>&1

This runs every minute and triggers scheduled tasks.


Common Reasons Laravel Scheduler Not Running

Let’s break down the real causes.


Cron Job Not Configured

If you don’t add the cron job, scheduler will never run.


schedule:run Not Executing

Even if cron exists, it may:

  • point to wrong PHP path

  • have permission issues


Wrong Server Timezone

Tasks may run at wrong times or never appear to run.


Task Not Defined Properly

If your Kernel.php has no schedule:

protected function schedule(Schedule $schedule)
{
    // empty
}

Nothing will run.


Queue Not Running

If your scheduled job dispatches a queue:

$schedule->job(new ProcessData());

Queue worker must be running.


Laravel Scheduler Not Running – Step-by-Step Fixes

Here are proven fixes.


Fix 1: Add Cron Job

Run:

crontab -e

Add:

* * * * * php /your-project-path/artisan schedule:run >> /dev/null 2>&1

Fix 2: Check schedule() Method

Ensure:

protected function schedule(Schedule $schedule)
{
    $schedule->command('inspire')->everyMinute();
}

Fix 3: Test schedule:run Manually

php artisan schedule:run

If nothing runs → problem in schedule definition.


Fix 4: Verify Timezone

Check:

config/app.php
'timezone' => 'UTC',

Match it with server timezone.


Fix 5: Check Logs

storage/logs/laravel.log

Look for:

  • command errors

  • exceptions


Fix 6: Ensure Queue Worker Running

Run:

php artisan queue:work

Without this, queued scheduled jobs fail.


Fix 7: Use withoutOverlapping() Carefully

If you used:

->withoutOverlapping()

It may block execution if previous job didn’t finish.


Fix 8: Restart Scheduler Services

Restart server services:

sudo systemctl restart cron
sudo systemctl restart php8.2-fpm

Fix 9: Debug with Output

Modify cron:

* * * * * php artisan schedule:run >> output.log 2>&1

Check logs for errors.


Real Working Laravel Scheduler Example

protected function schedule(Schedule $schedule)
{
    $schedule->command('emails:send')
             ->daily()
             ->withoutOverlapping();
}

Cron:

* * * * * php /var/www/project/artisan schedule:run >> /dev/null 2>&1

Best Practices for Laravel Scheduling

  • Use one cron job only

  • Keep tasks lightweight

  • Log important jobs

  • Use queues for heavy tasks

  • Monitor failures


Common Developer Mistakes

  • Forgetting cron job

  • Wrong artisan path

  • Not running queue worker

  • Wrong timezone

  • Silent failures


FAQs

Why Laravel scheduler not running?

Because cron job is missing or misconfigured.


How do I test scheduler?

php artisan schedule:run

Where is scheduler defined?

app/Console/Kernel.php

Does scheduler need cron?

Yes — it depends on cron.


Can scheduler run without queue?

Yes, but queued jobs require workers.


How often does scheduler run?

Every minute via cron.


Conclusion

The Laravel Scheduler Not Running issue is usually caused by missing cron jobs, incorrect configuration, or server-level issues.

By following these fixes, you can quickly debug and ensure your scheduled tasks run reliably in production.

For more Laravel scheduling details:
👉 https://laravel.com/docs/scheduling