运行php脚本时,crontab无法找到所需的php文件

时间:2012-09-08 16:46:25

标签: php linux cron

我想让crontab运行一个php文件,这里是cronjob

10 * * * * /usr/bin/php  /var/www/update/ranks.php >> /var/www/update/log/ranks.txt

但我一直收到一条错误消息,说明所需文件不存在

PHP Warning:  require_once(../mws_products.php): failed to open stream: No such file or directory in /var/www/update/ranks.php on line 2
PHP Fatal error:  require_once(): Failed opening required '../mws_products.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/update/ranks.php on line 2

当我从浏览器运行文件或进入文件目录并执行文件时,我不会遇到此问题,例如cd /var/www/update/

ranks.php

<?php 
require_once('../mws_products.php');

echo "-------------------------------------------------------------\n";
echo date('d-M-Y H:i:s',time())."\n";
echo "Update Ranks\n";
$products->updateRanks();
$database->addUpdate("ranks", time());
echo "\n\n\n";
?>

文件夹结构

[folder] update
   |____ [file] ranks.php

[file]   mws_products.php

可能导致此问题的原因是什么? (注意:我尝试重启apache和服务器)

2 个答案:

答案 0 :(得分:5)

当您从根目录运行crontab时,相对于给定的根目录,不存在../mws_pruducts.php。

有多种解决方案,这是其中之一:

define( 'ROOT', dirname(__FILE__) );  
require_once(ROOT . '/../mws_products.php');

答案 1 :(得分:1)

尝试使用文件的绝对路径...

require_once('/var/www/mws_products.php');