Найти в Дзене
Web-Admin

Проблема с невозможностью установки UMI-CMS на хостинг была полностью решена

При чем не техподдержка UMI-CMS, не техподдержка хостинга ничем не смогли помочь. Первые говорили, что нужно изменить настройки MySQL, а вторые не хотели их менять. Так и прошел у меня пятничный день - в попытках что-то получить от техподдержек. Главное, порадовала меня техподдержка хостинга, которая больше смахивала на отдел продаж. Вместо того, что бы помочь они начали предлагать не виртуальный хостинг, а виртуальный сервер, который по сути мне не нужен. Изначально вся проблема была с таким SQL запросом: SELECT cp.allow FROM cms_permissions cp WHERE method IS NULL AND $sql_where AND cp.allow IN (1, 2) GROUP BY module LIMIT 0,1 И я даже нашел тот файл из которого данный запрос вызывался. В принципе от туда этот код и был скопирован 😁 Вообще вся проблема данного запроса в том, что выбирается столбец Allow, а группировка производится по столбцу module. А у MySQL есть режимы работы - строгий и нормальный. Вот при строгом режиме не допускается, что бы в выборке присутствовало то поле, по

При чем не техподдержка UMI-CMS, не техподдержка хостинга ничем не смогли помочь. Первые говорили, что нужно изменить настройки MySQL, а вторые не хотели их менять. Так и прошел у меня пятничный день - в попытках что-то получить от техподдержек.

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

Изначально вся проблема была с таким SQL запросом:

SELECT cp.allow
FROM cms_permissions cp
WHERE method IS NULL AND $sql_where AND cp.allow IN (1, 2) GROUP BY module LIMIT 0,1

И я даже нашел тот файл из которого данный запрос вызывался. В принципе от туда этот код и был скопирован 😁

Вообще вся проблема данного запроса в том, что выбирается столбец Allow, а группировка производится по столбцу module.

А у MySQL есть режимы работы - строгий и нормальный. Вот при строгом режиме не допускается, что бы в выборке присутствовало то поле, по которому либо нет группировки, либо нет агрегирующих функций у поля.

Т.е. по хорошему данный запрос должен был выглядеть вот так (тем более в таблице в столбце allow одни единицы):

SELECT cp.allow
FROM cms_permissions cp
WHERE method IS NULL AND $sql_where AND cp.allow IN (1, 2) GROUP BY module, allow LIMIT 0,1

Решил просто поправить SQL запрос на правильный, но здесь я столкнулся со следующей проблемой. Установщик UMI-CMS просто заменяет исправленный файл обратно и установка улетает в ошибку 😒

Тогда решил, нужно ставить UMI-CMS на локальный компьютер, получать бесплатную лицензию и переносить потом всё это установленное богатство обратно на хостинг.

И всё прошло, как по маслу - установил на локальном сервере, заархивировал все файлы, сделал дамп базы данных и всё это благополучно залил на хостинг.

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

Но, тут опять ошибка. Создаю страницу в дереве сайта, а она просто не появляется там. Потом вторую страницу - то же самое. Залез в базу данных и вижу, что страницы в базе данных появляются, а вот система управления их не показывает:

Там, где главная страница - ничего не было
Там, где главная страница - ничего не было

Так как я уже больше 10 лет знаком с этой системой и не один десяток сайтов сделал на ней, то я сразу полез и включил все возможные выводы ошибок, включая логирования.

Ошибок сайт никаких не показал, и тогда полез в лог файлы - и о чудо обнаружил SQL запрос, который вызывает ошибку:

SELECT DISTINCT SQL_CALC_FOUND_ROWS h.id as id, h.rel as pid
FROM cms3_hierarchy h

WHERE h.domain_id = '1' AND h.lang_id = '1' AND h.is_deleted = '0'

ORDER BY h.ord ASC

И эта ошибка из той же оперы, что и предыдущая и связана со строгостью работы MySQL. Одна маленькая настройка решила бы все мои проблемы.

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

В итоге начал опять выискивать место откуда вызывается этот запрос, что бы исправить, но ничего не нашел. Похоже данный запрос собирается на ходу и его код разбросан по разным функциям 😒 Здесь понял, что бы исправить запрос придётся очень долго копаться в файлах UMI-CMS и решил пойти по следующему пути.

Что бы временно отключить строгость MySQL перед началом работы с ней нужно выполнить следующий запрос:

"SET @@sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"

Теперь осталось понять, куда в коде UMI-CMS можно впихнуть данный запрос и тут случилось чудо. Оказывается в файле config.ini есть ветка, которая для этого и предназначена.

-3

И вот после того, как я внёс последнюю строку - сайт начал полностью адекватно работать и вот сейчас я надеюсь, что не наткнусь еще на какую нибудь ошибку. Уж очень не хочется брать виртуальный сервер.