【问题标题】:crontab cannot find required php file when running a php script运行 php 脚本时,crontab 找不到所需的 php 文件
【发布时间】:2012-09-08 16:46:25
【问题描述】:

我正在尝试让 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和服务器)

【问题讨论】:

    标签: php linux cron


    【解决方案1】:

    由于您在根目录的 crontab 中运行 ../mws_pruducts.php 相对于给定的根目录不存在。

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

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

    【讨论】:

    • 嗨,这个解决方案在浏览器中运行文件时会给我带来任何问题吗?
    • 请记住,mws_products 位于浏览器的根目录之外。根据您的配置,您可能无法在浏览器中访问该文件。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-21
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 2020-11-04
      • 2021-06-12
      • 1970-01-01
      相关资源
      最近更新 更多