PHP函数在服务器和localhost上的行为不同

Rol*_*and 0 php hash rounding

我已经为登录系统构建了一个类.我正在使用一个函数来生成128位的盐键.但是当我在服务器(GoDaddy Servers)上运行此函数时,它告诉我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));
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*mac 6

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

http://php.net/manual/en/function.round.php

编辑:

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);
}
Run Code Online (Sandbox Code Playgroud)