Laravel "No scheduled commands are ready to run."

When you run

php artisan schedule:run

in the server, where your project is stored, you could see all of your commands running with output, looking like this:

"Running scheduled command: '/usr/local/bin/php' 'artisan' cache:update > '/dev/null' 2>&1 &"

but only if the current time is the exact one, for which the command is scheduled. Otherwise you are going to see this output:

"No scheduled commands are ready to run."

For example, if you schedule the command for every five minutes and run the command in 09:07 o'clock you will see that there are no scheduled commands, but if you run it in 09:10 you will see your command running.

In this way you can just schedule your command to run every 5 min just for debugging purposes:

$schedule->command('command:daily-reset')->everyFiveMinutes();

then observe if there is any error while running and eventually fix it. By me the problem was that I haven't installed GuzzleHttp (shame), so the fix was just running this in the terminal:

composer require guzzlehttp/guzzle

Did you try running command manually?

Run php artisan and see if your commands have registered.

If you have registered your commands you should see command:daily-reset and command:monthly-reset under the list of available artisan commands.

If you don't see them there go ahead and register your commands by adding it to commands property available in app/Console/Kernel.php.

protected $commands = [
    'App\Console\Commands\YourFirstCommand',
    'App\Console\Commands\YourSecondCommand'
];

Change crontab entry to

* * * * * php /home/privates/public_html/staging/current/artisan schedule:run


I realized that the problem for me was the below chained method:

->withoutOverlapping() 

Once I removed that method, my commands started running and being found by the daemon process.

I think there might be a bug with the method, but my project for now can take a bit overlapping so it's cool.