我想让crontab运行一个php文件,这里是cronjob
10 * * * * /usr/bin/php /var/www/update/ranks.php >> /var/www/update/log/ranks.txt
Run Code Online (Sandbox Code Playgroud)
但我一直收到错误,说所需的文件不存在
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
Run Code Online (Sandbox Code Playgroud)
当我从浏览器运行文件或进入文件目录并执行文件时,我没有遇到这个问题 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";
?>
Run Code Online (Sandbox Code Playgroud)
文件夹结构
[folder] update
|____ [file] ranks.php
[file] mws_products.php
Run Code Online (Sandbox Code Playgroud)
什么可能导致这个问题?(注意:我已经尝试重启apache和服务器)
当您从根目录运行crontab时,相对于给定的根目录,不存在./mws_pruducts.php.
有多种解决方案,这是其中之一:
define( 'ROOT', dirname(__FILE__) );
require_once(ROOT . '/../mws_products.php');
Run Code Online (Sandbox Code Playgroud)