JohnCMS 9.0.0

Тема закрыта
5.08K
.
Кадило крутится, лавэха мутится
# PaRtiZzaN (14.02.2020 / 17:33)
forum/?act=show_post&id=553169
Я так и не понял в чем проблема. Почему вы говорите что версия стабильная но не работает сразу после установки?
Проблема в 32 битной операционной системе.
.
¯\_(ツ)_/¯
Simba, На хостинге?
.
Кадило крутится, лавэха мутится
# PaRtiZzaN (14.02.2020 / 17:42)
Simba, На хостинге?
Да
.
¯\_(ツ)_/¯
Simba, И что теперь делать если я не хочу хостинг менять?
.
Кадило крутится, лавэха мутится
Добавлено: 14.02.2020 / 17:56
# PaRtiZzaN (14.02.2020 / 17:53)
Simba, И что теперь делать если я не хочу хостинг менять?
Ну юзать 32 битную операционку это всё равно, что юзать php5)
В следующих версиях конечно будем избавляться от ip2long, но это будет не скоро.

Добавлено: 14.02.2020 / 17:57
Тем более если такую операционку юзает хостинг, а не ты сам её выбрал, это заставляет задуматься об адекватности этого хостера)
.
¯\_(ツ)_/¯
Simba, Все цмс работают стабильно. Кроме нового Джона.
.
Кадило крутится, лавэха мутится
# PaRtiZzaN (14.02.2020 / 18:33)
Simba, Все цмс работают стабильно. Кроме нового Джона.
https://www.php.net/manual/ru/ ... p.php
Замечание:
На 32-битных архитектурах преобразование строки с числами в целочисленное значение будет некорректно для чисел, больших PHP_INT_MAX.

Я тут ничего не могу поделать. Хочется юзать на 32 битной ОС, придется ждать пока система фиксации IP будет переделана.
.
¯\_(ツ)_/¯
Simba, У меня на хостинге не 32бита
.
Кадило крутится, лавэха мутится
# PaRtiZzaN (14.02.2020 / 18:51)
Simba, У меня на хостинге не 32бита
Ну я тогда не знаю что у тебя за ошибка. Нужно разбираться детально. По скрину я ничего определить не могу и про 32 битную операционку я предположил ранее и ты это не опровергал на сколько я помню.
.
PaRtiZzaN
¯\_(ツ)_/¯
Читаем внимательно ошибку, видим, на какой именно функции ломается:
long2ip('1433478966')

Пробуем создать файл вне кода сайта, вызываем функцию:
echo long2ip('1433478966')
работает: http://fonext.ru/long2ip.php

Значит дело в чем-то другом

Ну и так, для справки:



А я нашел причину ошибки

И починил

Проблема – в неявных преобразованиях типов, которое не сработало так, как ожидается.

Читаем ошибку:
Fatal error: Uncaught TypeError: long2ip() expects parameter 1 to be int, string given in

Переводим: в качестве аргумента ожидается число, но передана строка. Окей, смотрим, в каком файле ошибка и на какой строке:
modules/profile/includes/index.php:39

Вот она, строка:
$user_data['ip'] = long2ip($user_data['ip']);

Пробуем преобразовать данные в число:
$user_data['ip'] = long2ip((integer)$user_data['ip’]);

Страница начинает открываться.

Ну, бывает, не сработало неявное преобразование типов нормально.

А именно:

В файле modules/profile/includes/index.php на 39 строке указал явный тип данных – число, заменив строку
$user_data['ip'] = long2ip($user_data['ip']);
на строку
$user_data['ip'] = long2ip((integer)$user_data['ip']);
Всего: 143