Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php cron job not running [duplicate]

root@xx:/var/www/test# which php
/usr/bin/php

root@xx:/var/www/test# ls -la
total 16
drwxrwxrwx 2 root root 4096 Nov 14 09:37 .
drwxrwxrwx 6 root root 4096 Nov 13 15:51 ..
-rwxrwxrwx 1 root root  153 Nov 14 09:35 test.php

This is my test.php file:

<?php
$my_file = 'file.txt';
$handle = fopen($my_file, 'w') or die('Cannot open file:  '.$my_file); //implicitly creates file

And this is the output of crontab -l:

#this is ok
* * * * * touch /tmp/hello
#this only creates an empty php_result.log
* * * * * /usr/bin/php /var/www/test/test.php > /tmp/php_result.log

root@xx:/var/www/test# php -v
PHP 5.4.34-0+deb7u1 (cli) (built: Oct 20 2014 08:50:30) 

The cron job will not run, and the problem is with php. If i run the file manually, all works well.

php test.php

Related question: Why is crontab not executing my PHP script?.

like image 711
user2990084 Avatar asked Jan 10 '23 10:01

user2990084


1 Answers

You need to use full paths in your scripts. Otherwise, cron won't know where is that file.

so instead of

$my_file = 'file.txt';

use

$my_file = '/path/to/file.txt';

Probably you were getting file.txt stored somewhere in /.

Note crontab runs in a limited environment, so it cannot assume anything regarding to paths. That's why you also have to provide the full path of php, etc.

From Troubleshooting common issues with cron jobs:

Using relative paths. If your cron job is executing a script of some kind, you must be sure to use only absolute paths inside that script. For example, if your script is located at /path/to/script.phpand you're trying to open a file called file.php in the same directory, you cannot use a relative path such as fopen(file.php). The file must be called from its absolute path, like this: fopen(/path/to/file.php). This is because cron jobs do not necessarily run from the directory in which the script is located, so all paths must be called specifically.

like image 110
fedorqui 'SO stop harming' Avatar answered Jan 19 '23 03:01

fedorqui 'SO stop harming'