Я получаю сообщение об ошибке с небольшим количеством заимствованного кода, который я использую для получения долготы и широты с IP-адресов. Это работало в прошлом — совсем недавно, на самом деле на прошлой неделе — но я получаю сообщение об ошибке, вызванное этой строкой кода:
return gmp_strval(gmp_init($ipv6long, 2), 10);
Кажется, проблема исходит от gmp_strval & gmp_init. Очевидно, мой общий сервер иногда имеет библиотеку gmp, а иногда нет (я не могу представить другую причину ошибки, так как она работала до каких-либо изменений в коде).
Эта строка относится к следующей функции (которая, конечно, является частью гораздо более длинного файла, который я не буду здесь размещать):
private function ipv6Numeric($ipv6) {
$ip_n = inet_pton($ipv6);
$bits = 15;
// 16 x 8 bit = 128bit
$ipv6long = 0;
while($bits >= 0){
$bin = sprintf("%08b", (ord($ip_n[$bits])));
if($ipv6long){
$ipv6long = $bin . $ipv6long;
}
else{
$ipv6long = $bin;
}
$bits--;
}
return gmp_strval(gmp_init($ipv6long, 2), 10);
}
По сути, я думаю, что я ищу какую-то альтернативу той строке, которая не требует библиотеки gmp. Я действительно мало занимаюсь вещами, поэтому не совсем уверен, что здесь происходит. Любой совет и / или просвещение будет очень цениться.
Задача ещё не решена.
Других решений пока нет …