InstantCMS 2.18.2

1.14K

Всем привет!

Новая версия InstantCMS доступна для скачивания и обновления. Мы учли все ваши сообщения об ошибках и пожелания с предыдущей версии.

Релиз тестировался на:

  • Apache 2.4.58
  • PHP 8.5.6
  • MariaDB 10.11.14

Основной список изменений

  • Поле характеристики планов Биллинга теперь необязательное;
  • Исправлен баг с выбором пресетов обложки категорий в виджете;
  • В виджет «Элементы шаблона» добавлена опция с позицией вывода уведомлений;
  • Исправлен недочёт с полем галерей в списках, когда галерея была одна для всех;
  • Добавлено количество иконок во вкладках настроек шаблона;
  • CSRF токен на уведомления в админке;
  • Единообразие метода getOption в cmsController, добавление возможности задать опцию по умолчанию;
  • Убран нотис в actionGroupsGroupMembers;
  • Добавлена возможность для каждого типа контента использовать свой шаблон наборов;
  • Правки ЮMoney в контексте их нового параметра sign;
  • Исправлен баг в Spyc (yaml библиотеки) когда появлялась вертикальная черта;
  • Исправлен баг с опцией «Добавлять в тег title страницы название сайта» после установки CMS;
  • Исправлен баг с присвоением id записи при загрузке фото в визуальных редакторах;
  • В трейте formItem теперь вызывается для полей формы метод afterStore();
  • В трейте deleteItem теперь можно указывать имя связанной с записью формы и перед удалением для полей формы вызывается метод delete();
  • Удалён ненужный код в actionAuthRestore;
  • cmsCacheFiles переделан на хранение в JSON;
  • Исправлена ошибка при инлайн редактировании пунктов меню;
  • Сохранение по enter при массовом редактировании в гридах;
  • VueJS обновлён до версии 3.5.34;
  • Исправление безопасности SSRF redirect/DNS rebinding для загрузок как по ссылке в полях изображений, так и в целом удалённых скачиваний;
  • Установка дополнений через временную директорию, отсутствует возможность доступа к распакованным файлам по URL;
  • Защита от Zip Slip для дополнений, проверка и запрет символических ссылок (symlink) в ZIP-архивах, защита от Zip Bomb (лимит количества файлов, размера архива и размера файлов), запрещены файлы .htaccess и .user.ini в пакетах, временные директории создаются со случайными именами, загруженные пакеты сохраняются под случайными именами с контролем целостности по SHA-256, изображения из пакетов дополнений проходят валидацию;
  • Функции хелперов string_random, files_copy_directory, files_remove_directory переработаны;
  • Добавлена возможность создавать форму опций пакетам дополнений;
  • В разделе «Контент» типы контента, имеющие связи, теперь подсвечиваются и имеют подсказку;
  • В разделе «Виджеты и страницы» добавлен быстрый поиск по страницам;
  • Убран нотис в поле fieldUrl;
  • Переработаны функции files_delete_file(), files_sanitize_name(), files_get_upload_dir();
  • Добавлена зависимость полей (как в форме) в фильтре и в виджете фильтра типов контента;
  • В гридах в админке исправлена проблема выделяемых записей при попытке выделить текст;
  • Очередная порция мелких косметических правок и рефакторинга, о которых расскажет вам dif :)

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

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

Важно! Убедитесь, что сейчас вы используете версию 2.18.1, иначе, обновитесь сначала до неё.

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

  • Убедитесь, что вы используете версию PHP не ниже 7.4.0;
  • Отключите кеширование в настройках сайта;
  • Отключите объединение js и css в настройках сайта;
  • Если вы используете свой шаблон и в нем есть файлы, присутствующие в пакете обновления, то обновите их;
  • При возникновении «белого экрана» категорически читать здесь;
  • Для тех, у кого свой шаблон у нас есть статья как быть, если в обновлении CMS есть изменения в шаблоне, рекомендуем к прочтению.

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

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

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

Пакет обновления для ручной установки можно скачать по этой ссылке. Демо сайт обновлён.

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

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

Вы можете стать официальным спонсором или отправить донат, в том числе в криптовалюте.
Вы также здорово поможете, если поставите звезду на GitHub, для нас это очень важно.

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

ауфф, крутяк

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

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

После обновления 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 1 месяц назад #

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

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

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

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

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

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

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

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

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

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

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

Скрин:

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

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

Изображение

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

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

Изображение

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

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

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

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

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

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

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

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

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

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

Изображение

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

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

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

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

Изображение

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

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

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

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

Появилась ошибка 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 1 месяц назад #

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

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

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

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

Я просто не до конца подтёр домен и не стёр отделяющие слэши. Проблема не в этом. При последнем обновлении на 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 1 месяц назад #

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изображение

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

Откройте файл /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 1 месяц назад #

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

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

$destination_dir_real = W:\userdata\temp\cms_install_95e953309f6626727ff3471518f33a6f

$tmp_dir = w:/userdata/temp\cms_install_95e953309f6626727ff3471518f33a6f

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

Теперь понятно в чём причина, 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 1 месяц назад #
  1. Cannot create temporary directory
+2
Fuze Fuze 1 месяц назад #

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

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

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

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

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

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

 Так у меня на локалке (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 1 месяц назад #

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

github.com/instantsoft/icms2/commit/bfa061a9c5606d3983c289a4e7502d75a9b18ed7

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

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

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

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

disk.yandex.ru/d/quQatZRqAYon4A

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

instantcms.ru/blogs/sokraschatel-ssylok.html

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо!!!
  

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

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

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

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

+1
RSN RSN 29 дней назад #

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

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

Спасибо!

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