Question

I am attempting to use relative paths in my crontab file on CentOS 6.4, so that I do not have to repeat the same absolute path over and over again. At the top of my crontab file, located here: /etc/crontab, I have:

SHELL=/bin/bash
PATH=/var/www/html/crons
MAILTO=""
HOME=/

And each of my commands looks like:

*/2 * * * * root /usr/bin/php "cronfile.php" >> "logs/cronfile_"`date +\%Y\%m\%d`".log"

I'm expecting that it'll run the cronfile.php PHP file in the /var/www/html/crons directory, and save the output from this to /var/www/html/crons/logs/cronfile.log. However, the file is not being run and the log file is not being created.

The command works fine if I run just:

/usr/bin/php "cronfile.php" >> "logs/cronfile_"`date +\%Y\%m\%d`".log"

from the command line after cding into the /var/www/html/crons directory.

Please advise, thanks.

Was it helpful?

Solution

After many trials and research, I discovered that the solution was using the HOME= variable, not the PATH= variable, like so:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/var/www/html/crons

And then each of the lines would just look like:

*/2 * * * * root /usr/bin/php cronfile.php >> logs/cronfile_`date +\%Y\%m\%d`.log

Hope this helps someone else with the same issue I had in the future.

OTHER TIPS

/usr/bin is already in the PATH on most systems by default, so you should be able to remove the PATH declaration from the top of your crontab.

Your job is running in a bash shell so you could do something like:

*/2 * * * * root cd /var/www/html/crons && php cronfile.php >> cronfile_`date +\%Y\%m\%d`.log
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top