Ubuntu: How to execute a php script using cron?



Question:

I am trying to execute a php file via cron every 2 minutes, but it's not working. My crontab is:

 */2 * * * * usr/bin/php /var/www/test/cron.php  

What am I doing wrong?


Solution:1

Check the output of which php and use the absolute path for php (in my case /usr/bin/php5).

*/2 * * * * /usr/bin/php /var/www/test/cron.php  

or just

*/2 * * * * php /var/www/test/cron.php  

For clarification, the default $PATH for cron is

PATH=/usr/bin:/bin  

You can check the $PATH with a test entry (Source):

* * * * * env > /tmp/env.output  

Thus, the file

/tmp/env.output  

is created.

You'll have to remove the entry * * * * * env > /tmp/env.output afterwards.


Solution:2

My recommendation would be to put call the script using standard web path, so you don't mingle the users and permissions, e.g. instead of doing:

/usr/bin/php <script>  

rather do:

/usr/bin/wget -q http://localhost/test/cron.php  

Then you need to make sure the script can be called just from localhost (f.e. using Apache2 access policy).

This way the cron script will be always run under the same user as the website which is a good policy to have in place.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »