Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel 5.2 Cron not working on centos

When I am trying to run Task Schedular on localhost(php version : PHP 5.6.4-4ubuntu6.4 (cli)) it is working perfectly.

crontab

* * * * * php /home/aishatest/public_html/Aisha/Aisha/artisan schedule:run >> /dev/null 2>&1

App/Console/Kernel.php

<?php

namespace App\Console;

use App\Console\Commands\CheckOutfitAvailibilityCommand;
use App\Http\Controllers\OutfitCronController;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        // Commands\Inspire::class,
        CheckOutfitAvailibilityCommand::class
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        \Log::error("Kernel");
        //$schedule->command('inspire')
        //         ->everyMinute();
        $schedule->command('CheckOutfitCommand')->cron('* * * * *');
    }
}

App/Console/Command/CheckOutfitAvailibilityCommand.php

<?php

namespace App\Console\Commands;

use App\Http\Controllers\OutfitCronController;
use Illuminate\Console\Command;

class CheckOutfitAvailibilityCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    private $outfitCronController;
    protected $signature = 'CheckOutfitCommand';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct(OutfitCronController $outfitCronController)
    {

        parent::__construct();
        $this->outfitCronController = $outfitCronController;
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        //
        \Log::error("command handle");
        $this->outfitCronController->checkOutfitAvailability();
    }
}

But when I am trying to run on CentOs Server(php version PHP 5.6.26 (cli)) it is giving error as follow

./storage/logs/laravel.log

[2016-09-22 05:54:02] local.ERROR: Kernel  
[2016-09-22 05:54:05] local.ERROR: exception 'ErrorException' with message 'Invalid argument supplied for foreach()' in /home/aishatest/public_html/Aisha/Aisha/vendor/symfony/console/Input/ArgvInput.php:281
Stack trace:
#0 /home/aishatest/public_html/Aisha/Aisha/vendor/symfony/console/Input/ArgvInput.php(281): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'Invalid argumen...', '/home/aishatest...', 281, Array)
#1 /home/aishatest/public_html/Aisha/Aisha/vendor/symfony/console/Application.php(743): Symfony\Component\Console\Input\ArgvInput->hasParameterOption(Array, true)
#2 /home/aishatest/public_html/Aisha/Aisha/vendor/symfony/console/Application.php(114): Symfony\Component\Console\Application->configureIO(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#3 /home/aishatest/public_html/Aisha/Aisha/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(107): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#4 /home/aishatest/public_html/Aisha/Aisha/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#5 {main}  

And if I try to run below command manually in the terminal,then also it is works perfectly.

php /home/aishatest/public_html/Aisha/Aisha/artisan schedule:run

I tried to find the solution, but couldnt find any.

like image 371
Rohit shah Avatar asked Nov 08 '22 08:11

Rohit shah


1 Answers

use the absolute path for php

/usr/local/bin/php /path/to/artisan schedule:run >> /dev/null 2>&1

i had the same problem. cron jobs within the Kernels schedule() function worked, but any time i tried calling a console command, it throw an exception.

like image 154
Bradley Kovacs Avatar answered Nov 30 '22 23:11

Bradley Kovacs