1

我有以下功能,我在这个主题上得到了帮助

function nextDelivery($day,$o_date,$oc) {
    $day_names = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    $day_num = array_search($day, $day_names);
    $o_date = new DateTime($o_date);
    $o_day_num = $o_date->format('w');
    $day_diff = ($day_num - $o_day_num) % 7;
    if($day_diff<0){$day_diff=7+$day_diff;}elseif($day_diff==0){$day_diff=7;}
    if($oc==2){$day_diff+7;}
    $order_day = clone $o_date;
    $order_day->add(new DateInterval("P".$day_diff."D"));
    return $order_day->format('Y-m-d H:i:s');
}

现在我刚刚将时间戳更改为太平洋/奥克兰,因为我的东道主是美国/丹佛。这改变了一切,除了使用 Cron Jobs 运行的文件,它们仍在输出旧的时间戳。现在,如果我在我网站的页面上运行此功能,它可以正常工作,但是如果使用完全相同的功能运行 cron 作业文件,我会收到以下错误

PHP Fatal error: Call to undefined method DateTime::add() in ***** on line 156

这是$order_day->add(new DateInterval("P".$day_diff."D"));

这是我的信息http://www.dpdesignz.co.nz/homefresh/lib/php_info.php

有没有人知道为什么会发生这种情况?

4

2 回答 2

2

DateTime::add在 PHP 5.3.0 中添加。您的 cron 作业可能使用的是旧版本。尝试升级,或更改它使用的版本。如果您不能这样做,那么,如注释中所述:DateTime::modify是一种替代方法

于 2012-09-17T03:12:20.857 回答
1

PHP 使用不同的 php.ini 文件,具体取决于它是从 CLI 运行还是作为来自网络服务器的 CGI 运行。听起来 CLI php.ini 可能指向不正确的东西。

于 2012-09-17T03:16:35.857 回答