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::addPHP5.3.0で追加されました。cronジョブはおそらく古いバージョンを使用しています。アップグレードするか、使用するバージョンを変更してみてください。それができない場合は、メモに記載されているようにDateTime::modify、代替手段です。

于 2012-09-17T03:12:20.857 に答える
1

PHPは、CLIから実行されているか、WebサーバーからのCGIとして実行されているかに応じて、異なるphp.iniファイルを使用します。CLIphp.iniが何か間違ったものを指しているようです。

于 2012-09-17T03:16:35.857 に答える