我有以下功能,我帮助建立了this topic
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
有没有人对为什么会这样做有任何想法?
答案 0 :(得分:1)
DateTime::add
was added in PHP 5.3.0.您的cron作业可能使用旧版本。尝试升级或更改其使用的版本。如果你不能这样做,那么,正如笔记中提到的那样:DateTime::modify
is an alternative。
答案 1 :(得分:1)
PHP使用不同的php.ini文件,具体取决于它是从CLI运行还是从Web服务器运行CGI。这听起来像CLI php.ini可能指向不正确的东西。