我有这个脚本,我在我的PHP中使用它将用户的出生日期转换为他们的年龄。 它在我的本地主机上工作正常,但当我将其上传到服务器时,页面出现此错误:
致命错误:在第19行的/home/content/31/9118831/html/projects/mark.ptb/PTB1/includes/mod_home/mod_platinum.php中调用未定义的函数date_diff()
这是我的代码,我猜我没有定义函数,虽然我无法理解为什么它在我的localhost上工作正常呢?
<?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>";
}
?>
答案 0 :(得分:1)
date_diff()
函数是PHP&gt; = 5.3的一部分。如果它在服务器上不存在但在本地计算机上存在,那么当您使用PHP&gt; = 5.3时,服务器正在使用旧版本的PHP。
始终使用与部署环境相同的PHP版本进行开发是一个好主意。要找出您正在使用的PHP版本,您可以echo
PHP_VERSION
常量。
答案 1 :(得分:1)
根据php manual,date_diff仅在PHP 5.3 +
中可用服务器上的PHP版本是否足够?您可以使用phpinfo()
命令确定服务器上正在使用的PHP版本。
答案 2 :(得分:0)
你这样做有点不对劲:)
$date = new DateTime($dob);
$diff = $date->diff('now')->y;
确保捕获错误,因为用户指定的$dob
字符串可能并不总是会产生有效日期。
答案 3 :(得分:0)
请使用日期对象而不是date_diff()函数。您可以使用$ date-&gt; diff()函数来计算日期差异 例如:
$ fromdate = new DateTime($ todate); $ diff = $ fromdate-&gt; diff('now') - &gt; y;