Переезд OkayCMS на PHP-7

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

Vitaly
Аватара
Vitaly
Репутация: 20
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 7 лет 8 месяцев

Сообщение #1 Vitaly » 15.08.2016, 10:04

Решил протестировать как OkayCMS Lite 1.2.1 работает на PHP-7 (7.0.3 в моём случае.) Т.к. бытует мнение, что на версии 7x сайт может работать значительно быстрее.
Сразу появились ошибки типа - PHP Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP
В общем если по нашему, то ошибка получается в том, что конструктор класса называется как сам класс.
Но правок к счастью пришлось вносить не много, для нормальной работы (на первый взгляд):

В файле \api\Languages.php
Строку 126 public function languages($filter=array()) {
Меняем на public function language($filter=array()) {
Строку 281 $languages = $this->languages();
Меняем на $languages = $this->language();
Строку 311 $languages = $this->languages();
Меняем на $languages = $this->language();

В файле \api\Translations.php
Строку 17 $language = $this->languages->languages(array('id'=>$this->languages->lang_id()));
Меняем на $language = $this->languages->language(array('id'=>$this->languages->lang_id()));

В файле \view\View.php
Строку 40 $languages = $this->languages->languages();
Меняем на $languages = $this->languages->language();

В файле \backend\IndexAdmin.php
Строку 142 $languages = $this->languages->languages();
Меняем на $languages = $this->languages->language();
И ниже в этом файле
Строку 167 $first_lang = $this->languages->languages();
Меняем на $first_lang = $this->languages->language();

Ну собственно это пока всё, все функции магазина не проверял, но после этих правок ошибок не показывает, если появится, то меняем по аналогии.
Проверялось на уже установленной, чистой Lite версии 1.2.1. Как работает инсталлятор на php7 - не проверял.
Собственно предложение к разработчикам, может в следующих версиях по умолчанию сделать код валидным для php7? Или есть подводные камни?

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 5 месяцев
Сайт Skype

Сообщение #2 OkayCMS » 15.08.2016, 11:40

Да, это есть в планах. В ближайших версиях сделаем поддержку php7

korshunov
korshunov
Репутация: 148
Сообщения: 1859
Зарегистрирован: 03.12.2015
С нами: 8 лет 4 месяца
Skype

Сообщение #3 korshunov » 15.08.2016, 14:09

Vitaly писал(а):Но правок к счастью пришлось вносить не много, для нормальной работы (на первый взгляд):

Вам повезло. Другим для нормальной работы обычно требуется несколько больше. Как минимум, нужна отправка писем о заказе...

Vitaly писал(а):Как работает инсталлятор на php7 - не проверял.

Практически никак не работает. Видимо, тамошние грубые ошибки (для php7) достались в наследство от Simpla...

Vitaly
Аватара
Vitaly
Репутация: 20
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 7 лет 8 месяцев

Сообщение #4 Vitaly » 16.08.2016, 07:31

Да, вы правы, для нормальной работы без этого никак. Но как я писал, все функции не проверял.
Кто знает, на какой странице есть требования okay-cms к софту? Какой PHP оптимальный, какие модули PHP должны быть подключены? Я не нашел этой информации на сайте.

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 5 месяцев
Сайт Skype

Сообщение #5 OkayCMS » 16.08.2016, 14:57

Сейчас мы переделываем сайт, на нем эта информация будет виднее.
Вообще:
Оперативная память не менее 192 мб;
Базы данных — MySQL 5+;
Веб-сервер —Apache 2.2.x. Рекомендуется связка Apache 2.2.x и nginx(фронтэнд);
PHP 5.3+ с установленными библиотеками JSON, cURL, php_zip, GD lib, mysqli, imagick;
Файловая система сервера позволяет создавать и удалять файлы из php скриптов в пределах директории сайта.

PHP 7 использовать не нужно.

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 8 месяцев
Откуда: Киев
Сайт

Сообщение #6 makki » 17.09.2016, 19:43

OkayCMS писал(а):PHP 5.3+ с установленными библиотеками JSON, cURL, php_zip, GD lib, mysqli, imagick;

В Design.php в функции is_mobile_browser() используется функция eregi(), которая устаревшая для PHP 5.3
А вообще-то непонятно зачем она там. Она нигде в скрипте не вызывается.
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

korshunov
korshunov
Репутация: 148
Сообщения: 1859
Зарегистрирован: 03.12.2015
С нами: 8 лет 4 месяца
Skype

Сообщение #7 korshunov » 18.09.2016, 06:34

makki писал(а):В Design.php в функции is_mobile_browser() используется функция eregi(), которая устаревшая для PHP 5.3
А вообще-то непонятно зачем она там. Она нигде в скрипте не вызывается.

Интересно, как Вы это себе представляете - функция ИСПОЛЬЗУЕТСЯ, но НЕ ВЫЗЫВАЕТСЯ ?

А вот что там действительно не используется, так это значения длинного массива
$agents = array(
'acs-'=>'acs-',
'alav'=>'alav',
.....
'xda-'=>'xda-'
);
Массив большой, у него ключи совпадают со значениями.
Видимо, это пришло из Simpla. В связи с этим 2 вопроса:
1. Надо бы определять текст экономнее.
2. Сам список составлен, скорее всего, несколько лет назад. Наверняка за это время появились новые мобильные браузеры и список вряд ли отражает современное положение дел.

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 8 месяцев
Откуда: Киев
Сайт

Сообщение #8 makki » 18.09.2016, 06:38

Я имел ввиду, что нигде не используется функция is_mobile_browser (), в которой задействована устаревшая php функция eregi
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 5 месяцев
Сайт Skype

Сообщение #9 OkayCMS » 18.09.2016, 09:34

makki писал(а):Я имел ввиду, что нигде не используется функция is_mobile_browser (), в которой задействована устаревшая php функция eregi
Да, в следующей версии уже будет использоваться актуальная.

korshunov
korshunov
Репутация: 148
Сообщения: 1859
Зарегистрирован: 03.12.2015
С нами: 8 лет 4 месяца
Skype

Сообщение #10 korshunov » 18.09.2016, 09:50

makki писал(а):Я имел ввиду, что нигде не используется функция is_mobile_browser (), в которой задействована устаревшая php функция eregi

Да, действительно, нигде не используется функция is_mobile_browser().
Вот еще хороший вопрос, зачем она вообще там живет.
Встречались случаи на Simpla и на Okay, когда эту функцию использовали для определения типа браузера и потом использовали разные шаблоны - для мобильных устройств и для прочих.


Название раздела: Предложения по улучшению OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Предложения по улучшению OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 44 гостя