PHP函数在服务器和本地主机上的行为不同

PHP函数在服务器和本地主机上的行为不同,php,hash,rounding,Php,Hash,Rounding,我已经为登录系统构建了一个类。我正在使用一个函数生成128位的salt密钥。但当我在服务器(GoDaddy服务器)上运行此函数时,它告诉我thr round()的参数数量错误。虽然我已经在本地主机上测试了几次,一切都很好 你能看一下并告诉我它有什么毛病吗 function encrypt($str, $len=null) { return (!empty($len)) ? hash('sha512', str_pad($str, (strlen($str) + $len),substr

我已经为登录系统构建了一个类。我正在使用一个函数生成128位的salt密钥。但当我在服务器(GoDaddy服务器)上运行此函数时,它告诉我thr round()的参数数量错误。虽然我已经在本地主机上测试了几次,一切都很好

你能看一下并告诉我它有什么毛病吗

function encrypt($str, $len=null) {
 return (!empty($len)) ?
    hash('sha512', str_pad($str, (strlen($str) + $len),substr(hash('sha512', $str),round(strlen($str)/3, 0,PHP_ROUND_HALF_UP),($len - strlen($str))),STR_PAD_BOTH)) :
    hash('sha512', substr($str,round(strlen($str)/3, 0,PHP_ROUND_HALF_UP), 16));
}

他们可能正在使用旧版本的php。直到PHP5.3.0,才添加
round()
的第三个参数

编辑:

if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
    round($number, 0, PHP_ROUND_HALF_UP);
}else{
    if($number % 1 == 0.5){
        $number+=0.1;
    }
    round($number, 0);
}

他们可能正在使用旧版本的php。直到PHP5.3.0,才添加
round()
的第三个参数

编辑:

if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
    round($number, 0, PHP_ROUND_HALF_UP);
}else{
    if($number % 1 == 0.5){
        $number+=0.1;
    }
    round($number, 0);
}

好的,我已经读过了,但是我不确定服务器运行的是哪个版本的PHP。无论如何,我对他们的服务器无能为力,我想,我只能找到一种方法绕过这个函数或其他类似的方法,对吗?你可以调用
phpinfo()
让php打印版本信息。您可以使用if语句将要舍入的数字的0.1相加为0.5.OK。所以我这样检查:
if(phpinfo()>5.3){…而不是使用HP\u ROUND\u HALF\u,我将它乘以0.1或0.5…}否则{…像我通常做的那样…}
?好的,我已经读过了,但我不确定服务器运行的是哪个版本的PHP。无论如何,我对他们的服务器无能为力,我想,我只能找到一种方法绕过这个函数或其他类似的方法,对吗?你可以调用
phpinfo()
让php打印版本信息。您可以使用if语句将要舍入的数字的0.1相加为0.5.OK。所以我这样检查:
如果(phpinfo()>5.3){…而不是使用HP\u ROUND\u HALF\u,我将它乘以0.1或0.5…}否则{…像我通常做的那样…}
?我刚刚找到了一个解决方案,我只是编写了这个函数,而不是round()调用这个函数:
函数round_up($value,$precision){$pow=pow(10,$precision);return(ceil($pow*$value)+ceil($pow*$value-ceil($pow*$value))/$pow;}
测试了它并运行正常。我在php手册页面上找到了它。感谢您告诉我问题的根源:)我刚刚找到了一个解决方案,我只是编写了这个函数,而不是round()调用这个函数:
函数round_up($value,$precision){$pow=pow(10,$precision);return(ceil($pow*$value)+ceil($pow*$value-ceil($pow*$value))/$pow;}
对其进行了测试,结果正常。我在php手册页面上找到了它。感谢您告诉我问题的根源:)