Command Line – How to Run a Cron Job for a PHP Script

command linecronPHPscripts

I want to run a php script using cron job on localhost. My script is located at:

/opt/lampp/htdocs/rrugd/myscript.php

Since opt is under root, I tried adding the cron job for root, as well as normal user, but it is not executing. This is the cron job for executing the php script every 2 minutes:

*/2 * * * * php /opt/lampp/htdocs/rrugd/myscript.php

My script is basically meant to truncate a table from the database. It will actually be happening at midnight, so the actual variables of cron job will change to

00 00 * * * php /path/to/script.php

But for testing I've used every two minutes. Ive searched on the internet, and AU, but I cannot get it to run.
I saw something related to setting a PATH but I didn't understand what is to be done exactly in that method.

Also, I would like to specify that the PHP script myscript.php DID NOT execute on CLI with the PHP command, however it does execute when executed or called through the browser on localhost!

PHP Information:

some@somepc$: php -v
PHP 5.5.3-1ubuntu2.2 (cli) (built: Feb 28 2014 20:06:05) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

Best Answer

Assuming its php5; There are instance of using php into a cronjob. You may try one of these by following;

  • In order to use php5 in terminal you will need php5 cli installed. First, check whether php5 & cli functionality is available. for that;
johan@ubusrv:~$ php -v 
PHP 5.2.4-2ubuntu5.3 with Suhosin-Patch 0.9.6.2 (cli) (built: Jul 23 2008 06:44:49) 
Copyright (c) 1997-2007 The PHP Group Zend Engine v2.2.0, 
Copyright (c) 1998-2007 Zend Technologies

The command displays that your php5 version along with php5 (cli) installed. If not, install it using the following command;

sudo apt-get install php5-cli
  • Once installed you can either add php or its binary path to the cronjob as below;

using php or php5

*/2 * * * * php /opt/lampp/htdocs/rrugd/myscript.php

using php binary path

*/2 * * * * /usr/local/bin/php /opt/lampp/htdocs/rrugd/myscript.php

You may also use below commands to find where your php/php5 path is;

johan@ubusrv:~$ which php 
/usr/bin/php 

johan@ubusrv:~/cli$ whereis php 
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz 

johan@ubusrv:~/cli$ type -a php 
php is /usr/bin/php 
  • Elsewhere, if you need to call a php script using URL; you can simply use lynx, curl or wget. Make sure you've placed your php script within the www or public_html directory and call the path properly on the cronjob.
*/2 * * * * wget -q http://localhost//myscript.php

More on: PHP Cron Job: How to Execute PHP Script Using Crontab in Linux