Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run artisan command schedule:run on hosting server? (Laravel)

I have statusUpdate.php file in the xampp\htdocs\project\app\Console\Commands folder.

statusUpdate.php :

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use DB;


class statusUpdate extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'status:update';

/**
 * The console command description.
 *
 * @var string
 */
protected $description = 'Update Job status daily';

/**
 * Create a new command instance.
 *
 * @return void
 */
public function __construct()
{
    parent::__construct();
}

/**
 * Execute the console command.
 *
 * @return mixed
 */
public function handle()
{
    $affected = DB::table('jobs')->update(array('status' => 1));
}
}

It is created by the following Laravel official documentation. Then I was added \App\Console\Commands\statusUpdate::class, class in Kernel.php on xampp\htdocs\project\app\Console folder.

Here is the karnel.php file code:

<?php

namespace App\Console;

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 = [
        \App\Console\Commands\statusUpdate::class,
];

/**
 * Define the application's command schedule.
 *
 * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
 * @return void
 */
protected function schedule(Schedule $schedule)
{
    $schedule->command('status:update')
             ->everyFiveMinutes();
}
}

Then I was run

php artisan schedule:run command using CMD on windows 7.

Now it is working fine(in local server). My jobs table status field is updated properly by 1.

But when I was deployed this project on the shared hosting and added a CRON command for my server in cPanel:

Cron job command is like this : php /path/to/artisan schedule:run 1>> /dev/null 2>&1

Now in this case command not working & this is the problem. how can I solve it?

like image 683
Inspire Shahin Avatar asked Aug 29 '15 06:08

Inspire Shahin


People also ask

How do I run php artisan command in Cpanel?

Actually in Cpanel no commands for php and composer related run because everytime you upload your projects on Cpanel you have to compile it down in your local and then upload it. Alternatively, get the SSH access from your Cpanel and after successful SSH login try running your various artisan commands you want.


3 Answers

Well. I am giving you the answer as per what you have said.

Cron job command is like this : php /path/to/artisan schedule:run 1>> /dev/null 2>&1

The path should be locating the artisan file in the server. Like this:

Let's say your artisan file location is /var/www/artisan, then the simple answer could be do like this:

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

Just check if that works. Thank You!

UPDATE:

http://i.imgur.com/wVAWAHK.png

This is how it should look like.

like image 156
Aditya Giri Avatar answered Oct 30 '22 03:10

Aditya Giri


This worked fine for me

/usr/local/bin/php /path/to/artisan schedule:run >> /dev/null 2>&1
like image 24
Seunope Avatar answered Oct 30 '22 02:10

Seunope


You should add the command from the cPanel server as

/usr/local/bin/php /home/xyz/public_html/artisan schedule:run 1>> /home/xyz/public_html/log_laravel 2>&1

This will keep all the logs in /home/xyz/public_html/log_laravel

Running scheduled command: '/opt/cpanel/ea-php71/root/usr/bin/php' 'artisan' SyncAPIOrders:orders > '/dev/null' 2>&1

In my case cron Job was not working, if you are about to schedule the command as once a day (i.e., 00:00) iff, same time is not reflected in a $schedule->command(); object

If the commands were incorrect, I used to get this warning in my Email as

PHP Warning:  Module 'magickwand' already loaded in Unknown on line 0
Status: 404 Not Found
X-Powered-By: PHP/5.6.37
Content-type: text/html; charset=UTF-8

No input file specified.

In Kernel.php you should specify

/**
 * Define the application's command schedule.
 *
 * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
 * @return void
 */
protected function schedule(Schedule $schedule)
{
    $schedule->command('SyncAPIOrders:orders')
               ->timezone('Asia/Kolkata')
               ->dailyAt('00:00');
}
like image 24
Nɪsʜᴀɴᴛʜ ॐ Avatar answered Oct 30 '22 04:10

Nɪsʜᴀɴᴛʜ ॐ