php cron job not running [duplicate]

我只是一个虾纸丫 提交于 2019-11-28 08:29:19

问题


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?.


回答1:


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.



来源:https://stackoverflow.com/questions/26927144/php-cron-job-not-running

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!