2

I have setup a cron to execute one of my php scripts. But the problem is the php script is not being executed at all not even partially.

Here is the cron I have set up

45 23 * * * /usr/bin/php -q /var/www/myscript.php

I have tried the following

  1. I removed the cron from normal user to root user still no results.
  2. I changed the permissions on the script using chmod +x /var/www/myscript.php
  3. I have used the command whereis php it gives the following

    php: /usr/bin/php /usr/share/man/man1/php.1.gz
    

Now, I don't know what else I can do. Please Help.

P.S. I can execute the script manully and it runs perfectly.

1
  • Errors from scripts run by crontab should show up in your system logs or you should receive them as a local email. Aug 2, 2013 at 9:35

4 Answers 4

4

1. As man php tells us...

   --no-header
   -q             Quiet-mode. Suppress HTTP header output (CGI only).

   --file file
   -f file        Parse and execute file

-q doesn't do anything in php-cli mode. As others have pointed out, you need -f.

2. +x is not required.

Revert it with:

chmod -x /var/www/myscript.php

3. whereis will give you all locations. If you just want the binary, use which php.

$ which php
/usr/bin/php
0

I am just taking a wild guess but shouldn't the path where you place the script be

45 23 * * * /usr/bin/php /var/www/html/myscript.php

i am still a newbie at cron :)

0

See man cron and the Debian-specific changes. Quote:

> As described above, the files under these directories have to be pass some sanity checks including the following: be executable, be owned by root, not be writable by group or other and, if symlinks, point to files owned by root. Additionally, the file names must conform to the filename requirements of run-parts: they must be entirely made up of letters, digits and can only contain the special signs underscores ('_') and hyphens ('-'). Any file that does not conform to these requirements will not be executed by run-parts. For example, any file containing dots will be ignored.

0

The correct crontab line would be:

45 23 * * * /usr/bin/php -f /var/www/myscript.php

Notice the -f instead of -q!

1
  • Thanks for the reply. Can you please let me know the difference between both. I mean -f and -q
    – Tarun
    Aug 2, 2013 at 8:17

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .