nomaki
nomaki

Reputation: 84

Crontab isn't running Laravel scheduled jobs

I've set up crontab on my AWS-EC2 instance to hit the Laravel scheduling endpoint every minute via the root account using sudo crontab-e:

* * * * * php ~/htdocs/artisan schedule:run >> /dev/null 2>&1

However, despite to the cron logs showing it is indeed running every minute:

Jan 26 12:02:01 ip-172-31-28-116 CRON[5057]: (root) CMD (php ~/htdocs/artisan schedule:run >> /dev/null 2>&1)

the job itself isn't executing.

Running the command php ~/htdocs/artisan schedule:run >> /dev/null 2>&1 straight up triggers the job and works.

I'm really struggling with what is going wrong here, am I missing something?

Upvotes: 1

Views: 808

Answers (2)

user320487
user320487

Reputation:

Use absolute paths when adding cron entries. ~/htdocs/artisan that should be set using the full path to your application root directory.

It works when you manually run the command because your environment is set accordingly. Not the case when adding cron entries using sudo.

Upvotes: 1

nomaki
nomaki

Reputation: 84

So, I failed to heed the cron output "No MTA installed, discarding output" - Upon installing an MTA (postfix, via sudo apt-get install postfix), it turned out that for the cronjob, php wasn't findable.

Changing the command to use the output of which php to:

/opt/bitnami/php/bin/php /home/bitnami/htdocs/artisan schedule:run

is now working.

Thanks for your help!

Upvotes: 2

Related Questions