2
votes

Iam trying to develop a cron job for a command to send email. I am completely new to cron jobs so I dont really know how it works.

Trying the command by myself in the console works perfectly. But when a set a cron job in CPANEL its not workingrs. I am using Laravel 5, can anyone help please?

Thanks!

My cron job: php /home/reporting/public_html/bsk/artisan schedule:run >> /dev/null 2>&1

My Kernel.php

enter image description here

My class emailUser

enter image description here

2
Have you tried running the command directly from your terminal to see if there are any errors? - Jerodev
You might have to set the absolute path for php. - Rwd
Wouldn't it be easier if you copy&paste text code, instead of posting links to pictures?... Those links will expire sooner or later :( - סטנלי גרונן
This link stackoverflow.com/questions/132971/… might be usefull. Also need to provide full path to PHP in your CRON command. - Viktor
@Jerodev yes I already try command by the terminal and it works perfectly - sara

2 Answers

1
votes

In Cpanel: (cPanel & WHM version 62)

Follow the menus : HomeAdvancedCron Jobs and add :

php /home/reporting/public_html/bsk/artisan schedule:run >> /dev/null 2>&1

For Reference : /home/user/public_html/index.php

On a Unix/Linux Server: use the cmdline crontab -e to enter the cron editor and add the line :

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

Cron Job will not work, 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');
}

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