InstantCMS 2.18.2

2.68K

Друзья, привет!

Рад сообщить, что мы выпустили новую версию InstantCMS! В ней учтены все ваши отчёты об ошибках и пожелания. Релиз прошёл тестирование на следующем окружении:

  • Apache 2.4.58
  • PHP 8.5.6
  • MariaDB 10.11.14

📋 Что нового и исправлено

Улучшения функционала:

  • Поле характеристик планов Биллинга теперь необязательное;
  • В виджет «Элементы шаблона» добавлена опция позиции вывода уведомлений;
  • Добавлено отображение количества иконок во вкладках настроек шаблона;
  • Для каждого типа контента можно использовать свой шаблон наборов;
  • В трейте formItem теперь вызывается метод afterStore() для полей формы;
  • В трейте deleteItem можно указывать имя связанной формы — перед удалением вызывается метод delete();
  • Добавлена возможность создавать форму опций для дополнений;
  • В разделе «Контент» типы контента со связями теперь подсвечиваются и имеют подсказку;
  • В разделе «Виджеты и страницы» — быстрый поиск по страницам;
  • Добавлена зависимость полей (как в форме) в фильтре и виджете фильтра типов контента.

Исправленные ошибки:

  • Выбор пресетов обложки категорий в виджете;
  • Отображение галерей в списках (когда галерея была одна для всех);
  • CSRF-токен для уведомлений в админке;
  • Опция «Добавлять в тег title страницы название сайта» после установки CMS;
  • Присвоение ID записи при загрузке фото в визуальных редакторах;
  • Инлайн-редактирование пунктов меню;
  • Сохранение по Enter при массовом редактировании в гридах;
  • Ошибки в библиотеке Spyc (вертикальная черта).

🔒 Безопасность:

  • Защита от SSRF (redirect / DNS rebinding) для загрузок по ссылке и удалённых скачиваний;
  • Защита от Zip Slip: запрет символических ссылок в ZIP-архивах;
  • Защита от Zip Bomb: лимиты на количество файлов, размер архива и файлов;
  • Запрет .htaccess и .user.ini в пакетах дополнений;
  • Временные директории создаются со случайными именами, пакеты сохраняются с контролем целостности по SHA-256;
  • Установка дополнений через временную директорию — недоступность распакованных файлов по URL;
  • Валидация изображений из пакетов дополнений;
  • ЮMoney: учёт нового параметра sign.

⚙️ Технические изменения:

  • Единообразие метода getOption в cmsController + опция по умолчанию;
  • cmsCacheFiles переписан на хранение в JSON;
  • VueJS обновлён до версии 3.5.34;
  • Переработаны хелперы string_random, files_copy_directory, files_remove_directory, files_delete_file(), files_sanitize_name(), files_get_upload_dir();
  • Убраны лишние нотификации и код (actionGroupsGroupMembers, fieldUrl, actionAuthRestore).

И, конечно, очередная порция мелких косметических правок и рефакторинга :) — об этом расскажет вам dif.

Подробнее об изменениях можно узнать из описаний всех коммитов с прошлого релиза.


⚡ Как установить обновление

⚠️ ВАЖНО! Убедитесь, что сейчас вы используете версию 2.18.1, иначе сначала обновитесь до неё.

Обязательно сделайте резервную копию сайта и дамп базы данных. Мы не несем ответственности за любые потери данных при неправильном обновлении.

Перед началом обновления:

  1. Убедитесь, что версия PHP — не ниже 7.4.0
  2. Отключите кеширование в настройках сайта
  3. Отключите объединение JS и CSS
  4. Если у вас свой шаблон с файлами из пакета обновления — обновите их
  5. При «белом экране» читайте эту статью
  6. Если в обновлении есть изменения в шаблоне — ознакомьтесь с нашей статьёй

Дополнительно:

  • Если в вашем шаблоне есть JavaScript-файлы с правками (из /templates/default/js/ или /templates/modern/js/) — замените или смержите их из пакета обновления. Не забудьте очистить кэш браузера (например, через счетчик версий для посетителей).
  • Для кастомной урезанной сборки: распакуйте пакет, удалите ненужные контроллеры, запакуйте обратно и обновитесь.

Механизм установки подробно описан в документации.

📦 Пакет обновления для ручной установки: скачать

🌐 Демо-сайт обновлён.


Огромное спасибо за сообщения об ошибках, донаты и пул-реквесты. Спасибо, что выбираете InstantCMS!

💙 Поддержите проект

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

Каждое ваше действие имеет значение. Спасибо, что вы с нами!

0
Clear Clear 5 месяцев назад #

ауфф, крутяк

0
Clear Clear 5 месяцев назад #

Ну у меня прошло так:

После обновления InstantCMS 2.18.0 -> 2.18.1 -> 2.18.2 в Billing появились Notice: Undefined index: refs_groups в hooks/user_tab_show.php и actions/refs.php. В cms_controllers.options для billing был включён is_refs: 1, но ключ refs_groups отсутствовал. После добавления refs_groups: [ ] и fallback в коде Notice исчезли.

Возможно, обновление должно добавлять refs_groups в старые настройки Billing. Но это не точно ))

0
Fuze Fuze 5 месяцев назад #

В cms_controllers.options для billing был включён is_refs: 1, но ключ refs_groups отсутствовал. После добавления refs_groups: [ ] и fallback в коде Notice исчезли.

Это от обновления 2.18.0 -> 2.18.1. Просто можно было пересохранить настройки биллинга, в новости я писал об этом. А в целом пакет обновления это делал, почему у вас не сделал, не могу знать.

+2
pupsik pupsik 5 месяцев назад #

Как обычно, ни одного из пунктов не понял :), но спасибо!

+1
Михаил Михаил 5 месяцев назад #

спасибо, обновился без пробелем

+1
dChirkis dChirkis 5 месяцев назад #

Класс. Спасибо

Просто хотелка — «временные директории создаются со случайными именами» — вот бы еще админка инсталилась с случайным именем как престашоп 

dChirkis dChirkis 5 месяцев назад #
Комментарий удален
0
dChirkis dChirkis 5 месяцев назад #

Почему может быть не видна обнова?

Скрин:

Изображение
+2
Fuze Fuze 5 месяцев назад #

Возможно с вашего хоста сервер upd.instantcms.ru недоступен или же попробуйте удалить файл /cache/update.dat перед проверкой обновления.

Изображение

0
dChirkis dChirkis 5 месяцев назад #

Каталог дополнений не доступен, это значит скорее проблема на хостинге

Изображение

/cache/update.dat — файл не обнаружен.
Спасибо/ понял куда копать

0
Clear Clear 5 месяцев назад #

это можно сделать один раз при установке и забыть, не обязательно это в инстралл пихать чтобы потом искать. Не нужно этого делать. Грамотнее самому один раз настроить при установке и всё.

0
dChirkis dChirkis 5 месяцев назад #

что именно Это? Установка была в варианте английского языка, у меня уже это второе обновление которое ставлю в ручную. Нет сообщения об обновлении. Рубильник поиска обновлений включен. Обновился в ручную

+1
Fuze Fuze 5 месяцев назад #

вот бы еще админка инсталилась с случайным именем как престашоп 

Тоже была такая мысль. Может и сделаю. Но вообще урл удминки можно менять очень давно.

0
Fuze Fuze 5 месяцев назад #

Внесите себе в диструбутив эти изменения и при установке можно будет поставить чекбокс «Генерировать рандомный URL админки». Или воспользуйтесь версией с гита или завтра уже — ночной сборкой.

Изображение

0
pupsik pupsik 5 месяцев назад #

Поясните кратко что это за «Ночная сборка»? Темная тема?

+1
Fuze Fuze 5 месяцев назад #

Дистрибутив, который собирается раз в сутки на основе текущего кода InstantCMS на гитхабе.

Изображение

0
pupsik pupsik 5 месяцев назад #

Ясно. «Zip Git'а». Все про все не прочитаешь. Я исходил из «Темная тема мне не нужна». 

0
Pawell Pawell 5 месяцев назад #

Приветствую. Спасибо за очередное обновление, при установке которого возникли трудности.

Появилась ошибка 500 и отладка ругалась на файл install.php После замены файла на текущий появилась следующая ошибка: 

Fatal error: Trait «icms\controllers\admin\traits\packageInstallerTrait» not found in /var/www/_usr/data/www//system/controllers/admin/actions/install.php on line 8

0
Fuze Fuze 5 месяцев назад #

/var/www/_usr/data/www//system/controllers/admin/actions/install.php

Не думаю что проблема именно в обновлении. У вас два слэша подряд. Убедитесь что в файле /system/config/config.php нет двойных слэшей.

В целом, в данном обновлении структура базы данных не менялась, можно просто заменить файлы.

0
Pawell Pawell 5 месяцев назад #

Я просто не до конца подтёр домен и не стёр отделяющие слэши. Проблема не в этом. При последнем обновлении на 2.18.1 всё обновилось, но выпала в конце ошибка 500. Я тогда не придал значения этому, а сейчас при попытке обновиться — сразу 500 error и отладка ругается на:

  1. Fatal error: Trait "icms\controllers\admin\traits\packageInstallerTrait" not found in /var/www/site_com_usr/data/www/site.com/system/controllers/admin/actions/install.php on line 8
+1
Fuze Fuze 5 месяцев назад #

Тогда просто обновитесь вручную. Все содержимое папки package из архива обновления загрузите в корень вашего сайта, заменяя файлы. И всё.

0
Pawell Pawell 5 месяцев назад #

Обновился. Спасибо.

+1
Zau4man Zau4man 5 месяцев назад #

Отличная новость. Множество небольших, но важных изменений.

+1
skewes skewes 5 месяцев назад #

Спасибо большое! Как всегда радуете нас)))

Ну а мы должны порадовать вас)))

Донат обязательно отправлю, но немного позже)))

+1
Pechora.Dev 🐻 Pechora.Dev 🐻 5 месяцев назад #

Молодцы, хорошее обновление!

Litemir Litemir 5 месяцев назад #
Комментарий удален
0
AtlantisWeb AtlantisWeb 5 месяцев назад #

Установка чистой систем с демо данными на локалке php8.1

Так же установка чистой 2,18,1 с апдейтом до 2,18,2

При попытке установить любые дополнения выдает ошибку: Ошибка распаковки пакета: Extraction escaped target directory

Изображение

0
Fuze Fuze 5 месяцев назад #

Откройте файл /system/controllers/admin/traits/packageInstallerTrait.php и строку

  1. throw new RuntimeException('Extraction escaped target directory' );

замените на

  1. throw new RuntimeException('Extraction escaped target directory: ' . $destination_dir_real . '::' .$tmp_dir);

И покажите ошибку ещё раз.

0
AtlantisWeb AtlantisWeb 5 месяцев назад #

При попытке вывести переменную "$destination_dir_real" ничего не происходит, т.е. даже нотис перестает выводить.

вывел через exit(), 

$destination_dir_real = W:\userdata\temp\cms_install_95e953309f6626727ff3471518f33a6f

$tmp_dir = w:/userdata/temp\cms_install_95e953309f6626727ff3471518f33a6f

0
Fuze Fuze 5 месяцев назад #

Теперь понятно в чём причина, sys_get_temp_dir() возвращает не с windows слешами, а должен.

Замените строку в том же файле

  1. $tmp_dir = rtrim(sys_get_temp_dir(), DIRECTORY_SEPARATOR)
  2. . DIRECTORY_SEPARATOR
  3. . 'cms_install_' . \string_random();

На строку:

  1. . DIRECTORY_SEPARATOR
  2. . 'cms_install_' . \string_random());
0
AtlantisWeb AtlantisWeb 5 месяцев назад #
  1. Cannot create temporary directory
+2
Fuze Fuze 5 месяцев назад #

Ок, найду windows и поставлю опенсервер. Пофисю, отпишусь.

0
AtlantisWeb AtlantisWeb 5 месяцев назад #

Благодарю, буду ждать!

0
Fuze Fuze 5 месяцев назад #
  1. $tmp_dir = realpath(rtrim(sys_get_temp_dir(), DIRECTORY_SEPARATOR))
  2. . DIRECTORY_SEPARATOR
  3. . 'cms_install_' . \string_random();

Это должно помочь

0
RSN RSN 5 месяцев назад #

 Так у меня на локалке (php8.2), при обновлении:

1. в админке указываю пакет с обновлениями

2. заливаю в ручную папки с обновлениями в движок

3. жму в админке на кнопку продолжить, появляется вторая страница с информацией о пакете и появляется плашка с предупреждением об обновлении...

4. жму кнопку продолжить, появляется плашка «Ошибка распаковки...»

Изображение

Систему 2.18.1 поднимаю каждый раз для эксперимента из бекапа...

Изменения в файл пакета обновления /system/controllers/admin/traits/packageInstallerTrait.php внёс до заливки файлов в движок… куки удалял...

И да… я в этом файле сделал два изменения и это:

  1. throw new RuntimeException('Extraction escaped target directory: ' . $destination_dir_real . '::' .$tmp_dir);

и это

  1. $tmp_dir = realpath(rtrim(sys_get_temp_dir(), DIRECTORY_SEPARATOR))
  2. . DIRECTORY_SEPARATOR
  3. . 'cms_install_' . \string_random();

(может только одно надо было?) попробовал и оба и только второе… одинаково.

ЗЫ: до этих изменений в файле, ошибка распаковки появлялось сразу (при указании пакета и нажатии кнопки продолжить), даже вторая страница с информацией о пакете не появлялась...( насколько помню)

0
Fuze Fuze 5 месяцев назад #

Попробуйте применить изменения из коммита

github.com/instantsoft/icms2/commit/bfa061a9c5606d3983c289a4e7502d75a9b18ed7

Честно говоря, варианты кончаются.

0
RSN RSN 5 месяцев назад #

Попробуйте применить изменения из коммита

Вот такой у меня файл получился (проверьте может не правильно)

disk.yandex.ru/d/quQatZRqAYon4A

С ним не работает, по всякому пробовал… и из другого браузера заходил. Пробовал после обновления установить это дополнение:

instantcms.ru/blogs/sokraschatel-ssylok.html

Тоже ошибка... 

Честно говоря, варианты кончаются.

Надо что бы ещё кто то проверил установку в ручную, даже просто после обновления поставить какое нить дополнение...

У меня ещё проблема, что я Виндой почти не пользуюсь из браузеров только Фаерфокс, и даже локальный недавно поставил Опенсервер 6.5, а в нём, вдруг какие модули не включены...

Может AtlantisWeb появится… Или ещё кто проверит. Не может быть что бы проблема была такой избирательной)) 

Завтра днём, ещё попробую, поэкспериментировать… может где то закэшировалось... 

0
Fuze Fuze 5 месяцев назад #

Я проверил чистую 2.18.2 с последним коммитом под windows и под linux, всё устанавливается. Странно почему первый шаг работает, а второй нет. Дайте вводные побольше, как повторить. Как я понял проблема на windows.

0
RSN RSN 5 месяцев назад #
Изображение

Завтра попробую чистую 2.18.2 поставить и посмотреть...

Как я понял проблема на windows.

Не однозначно) я же свой рабочий (на хостинге) сайт тоже обновил и на нём тоже (насколько помню) при обновлении выскочила эта ошибка...

Не хотелось рабочий сайт терзать, но завтра попробую на него какое нить дополнение установить… проверить...

ЗЫ: может конечно на рабочем сайте что то закэшировалось, но это уже совсем мистика...)

0
RSN RSN 5 месяцев назад #

Проверил на чистой системе на локалке и на хостинге.

Что бы не повторятся, результаты в теме:

instantcms.ru/forum/openserver-2-18-2-problemy-s-ustanovkoi-dopolnenii.html#post-370887

0
AtlantisWeb AtlantisWeb 4 месяца назад #

Заменил файл packageInstallerTrait.php‎ из этого коммита и все заработало на 2.18.2

Так же попробовал установку с Гита последнюю на 15.06.2026 2.18.3, тоже все ок.

Спасибо!!!
  

0
RSN RSN 5 месяцев назад #

Ок, найду windows и поставлю опенсервер. Пофисю, отпишусь.

Если поможет при локализации проблемы… При обновлении в ручную с 2.18.1 до 2.18.2 тоже была такая же проблема (Ошибка распаковки пакета...) и на локальном (Опен Сервер) и на реальном сайте. PHP8.2...

Версия в админке сменилась, вы написали, обновление БД не затрагивает, поэтому подумал такая фича у этого обновления) 

+1
RSN RSN 4 месяца назад #

Спасибо за обновление. Всё работает. Донат отправлен.

0
Fuze Fuze 4 месяца назад #

Спасибо!

0
Yuran Yuran 3 месяца назад #

Ребята, я извиняюсь что не совсем по теме… Короче делаю в project.ini так:  

  1. [instant.loc]
  2.  
  3. http_engine = Apache
  4. php_engine = PHP-8.2
  5. web_root = {base_dir}

Установка нормально запускается. Но так как на хостинге только Nginx + php-fpm делаю на локальном так 

  1. [instant.loc]
  2.  
  3. http_engine = Nginx
  4. php_engine = PHP-8.2
  5. web_root = {base_dir}

И постоянно на адресе instant.loc/install/ — постоянно Error 503 — сервис недоступен… В журнале и логах пусто. Помогите пожалуйста что за нюанс такой… может кто то сталкивался? На реальном хостинге без танцев все устанавливается...

0
Fuze Fuze 3 месяца назад #

Только логи укажут в чём конкретно у вас проблема. CMS работает на php8.5 точно.

0
Def Def 2 месяца назад #

Спасибо за обновление. Почему то на PHP 7.4 выдает, что нет доступного варианта хранения сессий, хотя хостер говорит, что все есть и в самой информации о системе есть, что файловое хранение сессий доступно.

Изображение

0
Gerald Gerald 1 месяц назад #

А вообще дальнейшая разработка движка продолжается. Или все, заброшен? ((((

0
Zau4man Zau4man 1 месяц назад #

Есть какие-то проблемы в текущей версии движка? Она довольно стабильная, закрыты все известные уязвимости. Вышла 4 месяца назад. Почему сразу

заброшен

0
Gerald Gerald 1 месяц назад #

Я ничего против не имею. Просто разработчик один, и я понимаю, и все понимают, что ему все равно тяжело, как бы оно не было. Просто решил поинтересоваться, Я просто сейчас на dle активно сижу, и вот ищу, на какой движок можно перейти, городской портал строю. Вот и решил узнать, вообще будет ли инстант жить и дальше обновлятся с добавлением нового функционала как для Админа, так и просто для юзера. Но спасибо за ответ)))) 

0
TOPg TOPg 1 месяц назад #

обновляется 2 раза в году, лучше для городского портала не найти

0
Fuze Fuze 30 дней назад #

Продолжается. Следить за изменениями кода можно на гитхабе. Заодно поставить там нам звезду. Забрасывать не планируется.

0
Gerald Gerald 30 дней назад #

Спасибо большое. Звезду поставлю)))))) 

0
TOPg TOPg 30 дней назад #

был удивлён узнав, что свойства категорий не работают с компонентом мультиязычности, буду рад увидеть в обновлении

0
TOPg TOPg 29 дней назад #

обсмотрелся)

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.