Linux / UNIX Setup and Run PHP Script As A Cron Job

last updated in Categories , , ,

I‘ve written a PHP script. I would like to run it as a cron job. I’m using CentOS server with Apache web server. How do I setup a PHP script as a cron job on a Linux or Unix-like systems?

You need to setup execute permission on a php script. You need to use chmod command to change file access permissions. [donotprint][/donotprint] Use the chmod command as follows on your php script:

chmod +x scriptname.php

Also make sure you add following line to top of php script (first line should be #!/usr/bin/php):

#!/usr/bin/php

If you are using FreeBSD unix os, use:

#!/usr/local/bin/php

#!/usr/bin/php is called as a shebang (pound bang). It execute php script using the interpreter /usr/bin/php. Save and close the file.

Setup and run php script as a cron job

Now add cron job by typing following command:
$ crontab -e
Sample outputs:

# run everday at 10:45
45 10 * * *     /path/to/myphpscript.php

Save and close the file.

This entry is 11 of 16 in the Linux Cron Jobs Howto & Tutorial series. Keep reading the rest of the series:
  1. What is cron on a Linux or Unix-like systems?
  2. How To Add Jobs To cron Under Linux or UNIX?
  3. Verify crond Daemon And Cronjobs Are Running
  4. Start Restart and Stop The Cron or Crond Service
  5. List / Display All Cron Jobs
  6. Linux / UNIX Crontab File Location
  7. Change Crontab Email Settings ( MAILTO )
  8. Disable The Mail Alert By Crontab Command On a Linux or Unix-like Systems
  9. At What Time Cron Entries In cron.daily, cron.weekly, cron.monthly Run?
  10. Execute Cron Job After System Reboot
  11. Setup and Run PHP Script As A Cron Job
  12. Run crontab job every minute on a Linux or Unix-like system
  13. Running crontab (cron jobs) Every 10 Minutes
  14. Cron Job Script Execution on the Last Day of a Month
  15. Execute / Run crontab (cron jobs) every 1 minute
  16. Ubuntu create cron.log file

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

15 comment

  1. My apologies for nitpicking but shouldn’t the cron job be,

    45 10 * * * /path/to/myphpscript.php

    for the Cron to run at 10:45 as the first field from the left starts with Minute..Hour and so on.

  2. Swapneel is correct. A cronjob runs off of the following format for schedules.
    minute hour day month dayofweek command

  3. i tried passing arguments to a php script in UNIX

    For example: 45 10 * * * /path/to/myphpscript.php -args filename=”hello.txt”

  4. is there a way to pass arguments to a php script in unix

    For example: 45 10 * * * /path/to/myphpscript.php -filename=”hello.txt”

  5. Great, thanks. Been do lazy to read up on this for a while, but this page makes it simple.

  6. I run as a ./email_test.php

    before I set as a cron job I run on a terminal,but then I had following error

    “/usr/bin/php^M: bad interpreter: No such file or directory centos PHP

  7. Search your php interpreter with help this command:
    locate bin/php
    if you need update location database, use:
    updatedb
    or (if it FreeBSD)
    /usr/libexec/locate.updatedb

  8. thanks a lot.

    i run cron 00 11 30 08 4 php /path /script -args argumentName=”value”

    it run.

    thanks

  9. I have a website http://www.noidasindhis.com from which I send emails to the registered Sindhis.
    My program to send emails is in PHP and runs fine.
    The site has been taken from dollar2host under Linux environment. I wish to send my mails at specified intervals using cron job but do not know the Linux command to do so.
    Can any one help me?
    Sahjwani

    Still, have a question? Get help on our forum!