1

ユーザーの生年月日を年齢に変換するためにphpで使用しているこのスクリプトがあります。ローカル ホストでは正常に動作しますが、サーバーにアップロードすると、ページに次のエラーが表示されます。

致命的なエラー: 19 行目の/home/content/31/9118831/html/projects/mark.ptb/PTB1/includes/mod_home/mod_platinum.php の未定義関数 date_diff()の呼び出し

これが私のコードです。関数を定義していないと思いますが、なぜ私のローカルホストでうまく動作するのか理解できませんか?

<?php
 $dob = $platinum['dob'];

function age_from_dob($dob) {


       $age = date_diff(date_create($dob), date_create('now'))->y;  
       return $age;
}

?>

<?

        $platinum_set = get_platinum_users();
        while ($platinum = mysql_fetch_array($platinum_set)) {
        $age = age_from_dob($platinum['dob']);
             echo "
            <div class=\"platinumcase\">
            <a href=\"profile.php?id={$platinum['id']}\"><img width=80px height= 80px src=\"data/photos/{$platinum['id']}/_default.jpg\" class=\"boxgrid\"/></a><h58> {$platinum['first_name']} {$platinum['last_name']}</h58><br/><br/><h52> ".$age." Years Old<br/><br/>From {$platinum['location']}</h52>

            </div>";
        }
    ?>
4

4 に答える 4

1

date_diff()関数は PHP >= 5.3 の一部です。サーバーには存在しないが、ローカル マシンには存在する場合は、PHP >= 5.3 を使用しているにもかかわらず、サーバーは古いバージョンの PHP を使用しています。

デプロイメント環境と常に同じバージョンの PHP を使用して開発することをお勧めします。echo使用している PHP のバージョンを調べるには、PHP_VERSION定数を使用できます。

于 2012-12-11T02:20:46.413 に答える
1

PHPマニュアルによると、date_diffはPHP 5.3以降でのみ利用可能です

サーバー上の PHP のバージョンは十分ですか? phpinfo()コマンドを使用して、サーバーで使用されている PHP のバージョンを確認できます。

于 2012-12-11T02:22:32.477 に答える
0

あなたはそれを少し間違っています:)

$date = new DateTime($dob);
$diff = $date->diff('now')->y;

$dobユーザー指定の文字列が常に有効な日付になるとは限らないため、必ずエラーをキャッチしてください。

于 2012-12-11T02:21:17.850 に答える