Question

Cron Jobs with Laravel on Ubuntu 16.10 x64

Hello, I’m running an Ubuntu 16.10 x64 and have deployed the php Framework Laravel 5.3.28 on the server. For the most part everything is working as normal however I’m trying to get the crontab to call artisan commands like php artisan schedule:run so that laravel’s task scheduler can be put to use.

I do not wish to download any extra packages to make this work as I feel there shouldn’t really be a need to since the cron can call, what looks like, any command if properly coded.

What I’m trying to do: From within the crontab -e I’m trying to properly write the Ubuntu correct way to call php artisan schedule:run

What I’ve done: I’ve currently tried multiple different ways of writing this command and nothing is working as noted below:

#Attempt for cron
SHELL=/bin/bash
#PATH=???? <--- Confused if this is even necessary
* * * * * php /path/to/artisan scheduled:run 1>> file.log 2>&1
* * * * * /path/to/ php artisan scheduled:run 1>> file.log 2>&1
* * * * * /path/to/ php artisan scheduled:run >> file.log
* * * * * /path/to/ php artisan scheduled:run 1>> file.log
* * * * * /path/to php artisan schedule:run
* * * * * /usr/bin/php /var/www/artisan scheduled:run 1>> file.log

I’ve gone to multiple resources to try and find the answer but nothing seems to be the answer to my specific problem.

Resources:

Conclusion: At this point I’m stuck beyond stuck. Can someone please help me? All I’m trying to do is call the php artisan command using Ubuntu’s cron and I don’t know the exact way to do it. ANY and all assistance is greatly appreciated.

Thanks in advance,

Happy Holidays!!


Submit an answer


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Thank you @ryanpq for the answer you provided here

After a lot of digging and logging I found that the root user apparently did not have permission to access the .sh file that I made as an alternative for crons to directly access the php artisan commands.

I had to install a mail server called Postfix to be able to dump the cron’s more detailed error logs into this mail server in order to see what was REALLY going on behind the scenes on the server side.

sudo apt-get update

sudo apt install mailutils

I chose all the default settings instead of trying to set it up and had it dump the routed server notifications into a /var/mail/root.log directory to which it then showed me all the errors that were occuring.

From there I found that one of the many bugs was that the root user didn’t have permission to read the .sh file which was fixed with the below example:

(*Note - Be sure to cd into the directory where the .sh file lives)

chmod +x cron-task-here.sh

Then, through a lot of trial and error, I found that you had to access the artisan with your crontab’s HOME config set to:

HOME=/

and then have the .sh read as follows:

#!/bin/bash

php /path/to/artisan schedule:run
Ryan Quinn
DigitalOcean Employee
DigitalOcean Employee badge
December 27, 2016

Several of the crontab entries you’ve tried should work. My first guess leads me to ask whether you have installed the php-cli package? Without them, you cannot run php scripts from the command line, only via a web server. If you haven’t already I would recommend installing php7.0-cli

sudo apt-get update
sudo apt-get install php7.0-cli

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel