Просмотров: 37488
Дата последнего изменения: 02.12.2022
Сложность урока:
2 уровень — несложные понятия и действия, но не расслабляйтесь.
3
4
5
При попытке обновления выдаётся ошибка «Ошибка соединения с сервером обновлений: [110] Connection timed out.»
Ошибка свидетельствует о том, что скрипт обновления не может подключиться к серверу обновлений www.bitrixsoft.com на порт 80. Причины могут быть следующие:
- недоступны функции работы с сокетами, в частности, fsockopen();
- на сервере запрещены исходящие соединения к 80 порту;
- недостаточный объем памяти на сервере (Часто проявляется на VPS с виртуализацией OpenVZ и 256 Мб RAM.);
- проблема в работе сети.
Вам необходимо обратиться к администратору сервера, предоставив описание ошибки.
Ошибка при обновлении: [SITE_LICENSE_VIOLATION] Превышено количество лицензированых сайтов
Эта ошибка свидетельствует о том, что в системе либо не зарегистрировано ни одного сайта, либо все сайты деактивированы, либо превышено количество активных сайтов, разрешенных текущей лицензией.
Для решения проблемы и получения возможности загрузки и установки обновлений, необходимо или зарегистрировать в системе хотя бы один сайт, или активировать существующий из раздела, или деактивировать сайты до количества, разрешенных текущей лицензией:
Рабочий стол > Настройки > Настройки продукта > Сайты > Список сайтов.
Ошибка при обновлении [ERROR_WRONG_CODE]
Система обновлений продукта привязывается к конкретной установке и «запоминает» состояние системы после очередного обновления. Ошибка возникает в том случае, если текущее состояние не соответствует тому, которое было на момент последнего обновления. Этот механизм призван пресечь попытки обновления на одном лицензионном ключе неограниченного количества установок продукта.
Согласно лицензионному соглашению, на каждый лицензионный ключ допускается две установки системы: одна публичная и одна локальная (для разработчика), но недоступная из Интернета. С учетом этого система настроена так, что сохраняет данные о двух установках. При этом, если не переносить копию с локальной машины на сервер и назад — можно обновлять независимо обе копии, проблем не возникнет. Если же вам необходимо переносить продукт на локальную машину, то следует обновлять только одну копию из двух: либо на сервере, либо локальную (зависит от ваших предпочтений).
Аналогичным образом следует поступать при переносе сайта на новый сервер: скопировать структуру файлов и БД на новый сервер, после этого, не обновляя продукт на старом, удалить его сразу после обновления DNS.
Ошибка Class ‘CUpdateExpertMode’ not found
Ошибка на странице обновлений:
Class 'CUpdateExpertMode' not found (0) /app/www/bitrix/modules/main/admin/update_system.php:50 #0: require_once /app/www/bitrix/admin/update_system.php:2
При этом класс CUpdateExpertMode определен в /bitrix/modules/main/classes/general/update_client.php
.
Ситуация связана с влиянием OpCache. Параметр opcache.validate_timestamps (/etc/php.d/opcache.ini
) имеет значение 0
, должно быть: On
.
Битрикс выпустили новое обновление V22.100.0 из-за которого у многих перестал правильно работать сайт. Перестали работать формы обратной связи, невозможно оформить заказ, где перестали отображаться картинки и баннеры. В этой статье попробуем решить проблему с обновлением Битрикс V22.100.0.
Из-за чего сломался сайт после обновления Битрикс?
В новом обновлении Битрикс были обновлены версии библиотек jquery до актуальных. Данные библиотеки используются в коммерческих (платных) шаблонах и модулях. Если своевременно обновлять купленные модули и шаблоны, то этих ошибок можно избежать, так как разработчики модулей и шаблонов следят за изменениями в Битрикс и своевременно вносят изменения в свои решения. По этому важно вовремя продлять лицензии на купленные шаблоны и модули.
Ниже разберем, что делать если продлять лицензию на шаблон и модули нет возможности, а возобновить работу сайта нужно.
Как восстановить работу сайта после обновления Битрикс V22.100.0
- Сделать резервную копию
- Скачать архив с нужными скриптами с нашего сайт. Архив содержит старые библиотеки jquery необходимые для работы вашего сайта
- Разархивируем файлы в папку (требуется создать) по пути /bitrix/js/main/jquery_new либо через FTP либо через административную панель сайта по пути Контент — Структура сайта — Файлы и папки. Файлы лучше загружать в новую папку, чтобы Битрикс не смог затереть после очередного обновления ядра старые библиотеки, которые используются вашим шаблоном или модулями
- Редактируем файл /bitrix/php_interface/init.php и если его нет, то создаем. Файл желательно редактировать через FTP, а не через административную панель сайта. Вставляем следующий код
CJSCore::Init(); $ar=array( /* external libs */ 'jquery' => array( 'js' => '/bitrix/js/main/jquery_new/jquery-1.8.3.min.js', 'skip_core' => true, ), 'jquery_src' => array( 'js' => '/bitrix/js/main/jquery_new/jquery-1.8.3.js', 'skip_core' => true, ), 'jquery2' => array( 'js' => '/bitrix/js/main/jquery_new/jquery-2.1.3.min.js', 'skip_core' => true, ), 'jquery2_src' => array( 'js' => '/bitrix/js/main/jquery_new/jquery-2.1.3.js', 'skip_core' => true, ), 'jquery3' => array( 'js' => '/bitrix/js/main/jquery_new/jquery-3.3.1.min.js', 'skip_core' => true, ), 'jquery3_src' => array( 'js' => '/bitrix/js/main/jquery_new/jquery-3.3.1.js', 'skip_core' => true, ), ); foreach ($ar as $ext => $arExt) { CJSCore::RegisterExt($ext, $arExt); }
Важно! Это скрипт PHP который должен быть заключен между тегом <?php …. ?>. Если в файле init.php данный тег присутствует, то код вставляем между ними, дописывать тег не нужно. Если тега нет, то перед и после кода вставляем <?php КОД_ИЗ_СТАТЬИ ?>.
- Проверяем работу сайта
Для начала — НЕ ПАНИКОВАТЬ!
Все решается достаточно просто:
- Скачиваете файл к себе на компьютер: Скачать файл
- В админке сайта переходите: Контент — Структура сайта — Файлы и папки — /bitrix/js/main/jquery
- Загружаете и распаковываете скачанный файл. Файл содержит версии библиотек jquery, которые работали у вас до этого.
- Открываете на редактирование в режиме PHP (ЭТО ВАЖНО!!) файл /bitrix/php_interface/init.php
- Вставляете туда данный код:
CJSCore::Init(); $ar=array( /* external libs */ 'jquery' => array( 'js' => '/bitrix/js/main/jquery/jquery-1.8.3.min.js', 'skip_core' => true, ), 'jquery_src' => array( 'js' => '/bitrix/js/main/jquery/jquery-1.8.3.js', 'skip_core' => true, ), 'jquery2' => array( 'js' => '/bitrix/js/main/jquery/jquery-2.1.3.min.js', 'skip_core' => true, ), 'jquery2_src' => array( 'js' => '/bitrix/js/main/jquery/jquery-2.1.3.js', 'skip_core' => true, ), 'jquery3' => array( 'js' => '/bitrix/js/main/jquery/jquery-3.3.1.min.js', 'skip_core' => true, ), 'jquery3_src' => array( 'js' => '/bitrix/js/main/jquery/jquery-3.3.1.js', 'skip_core' => true, ), ); foreach ($ar as $ext => $arExt) { CJSCore::RegisterExt($ext, $arExt); }
ОБРАТИТЕ ВНИМАНИЕ: это PHP код. Он должен быть заключен в блок <?php …. ?>
Если данные символы уже есть у вас в файле — вставляете внутри блока. Если файл пустой, то перед данным кодом добавляете <?php .
Обязательно проверьте, что у вас есть доступ по FTP на сервер, т.к. если сделате ошибку в данном файле сайт может перестать работать. - Все, сайт должен заработать как до обновления.
UPD: Коллега Николай Иванов предложил распаковывать архив во вновь создаваемую папку /bitrix/js/main/jquery_old/ для предотвращения стирания старых библиотек битриксом.
В этом случае код для init.php будет выглядеть следующим образом:
CJSCore::Init(); $ar=array( /* external libs */ 'jquery' => array( 'js' => '/bitrix/js/main/jquery_old/jquery-1.8.3.min.js', 'skip_core' => true, ), 'jquery_src' => array( 'js' => '/bitrix/js/main/jquery_old/jquery-1.8.3.js', 'skip_core' => true, ), 'jquery2' => array( 'js' => '/bitrix/js/main/jquery_old/jquery-2.1.3.min.js', 'skip_core' => true, ), 'jquery2_src' => array( 'js' => '/bitrix/js/main/jquery_old/jquery-2.1.3.js', 'skip_core' => true, ), 'jquery3' => array( 'js' => '/bitrix/js/main/jquery_old/jquery-3.3.1.min.js', 'skip_core' => true, ), 'jquery3_src' => array( 'js' => '/bitrix/js/main/jquery_old/jquery-3.3.1.js', 'skip_core' => true, ), ); foreach ($ar as $ext => $arExt) { CJSCore::RegisterExt($ext, $arExt); }
В административном интерфейсе коробочных версий продуктов «1С-Битрикс» вы могли заметить такое уведомление:
С 01.02.2023 будет ограничена поддержка наших продуктов на PHP версии ниже 8.0. Рекомендуемая версии PHP – 8.1 или выше. Вы используете версию PHP 7.4.33. Пожалуйста, запланируйте обновление PHP или обратитесь в техническую поддержку вашего хостинга.
Почему важно обновить PHP
Версия PHP 7.х объявлена устаревшей и больше не поддерживается, для неё не выпускаются исправления функциональных ошибок и ошибок безопасности. Использование версий PHP ниже 8 крайне не рекомендовано.
Вы не сможете установить обновления коробочных версий продуктов «1С-Битрикс» для исправления ошибок и получения нового функционала, пока не обновите PHP до минимальной версии 8.0 или рекомендованной 8.1 в своем серверном окружении.
Запланируйте обновление PHP до минимальной версии 8.0 или до рекомендуемой PHP 8.1 в самое ближайшее время.
Как обновить PHP
Обновление версии PHP необходимо произвести поэтапно. Для этого обратитесь к вашему системному администратору или в техподдержку вашего хостинга.
-
Обязательно создайте резервную копию вашей установки. Это может быть как резервная копия средствами продукта, так и полностью всего сервера, например виртуальной машины VMBitrix.
-
Обновите ядро и все модули продукта до последних доступных версий в разделе Настройки > Marketplace > Обновление платформы.
-
Обновите все сторонние решения из Маркетплейса до последних доступных версий в разделе Настройки > Marketplace > Обновление решений.
-
Обновите версию PHP до минимальной 8.0 или рекомендованной 8.1 на своем сервере.
Если вы используете виртуальную машину VMBitrix, то обновить PHP можно через меню VMBitrix: 1. Manage servers in the pool — 8. Update PHP and MySQL. Подробнее читайте в отдельном курсе.
- Еще раз проверьте и установите все доступные обновления платформы и решений из Маркетплейса.
Куда обращаться в случае ошибок при обновлении версии PHP до 8.х
-
Если после обновлений PHP появятся ошибки в работе стандартных модулей продуктов «1С-Битрикс», то обратитесь в Поддержку24.
Также по модулям из Маркетплейса, в названия которых содержатся
bitrix.*
, нужно обращаться в Поддержку24, например:bitrix.eshop bitrix.sitecommunity bitrix.sitecorporate bitrix.siteinfoportal bitrix.sitepersonal bitrix.learningtemplates
-
По ошибкам в сторонних модулях из Маркетплейса обращайтесь к разработчикам модуля, их контакты указаны на странице этого модуля во вкладке «Поддержка».
Примеры частых ошибок и их решения
Возможные причины ошибок после обновления до PHP 8.х:
- До перехода на PHP 8.х не было обновлено ядро и все модули продукта до последних доступных версий в разделе Настройки > Marketplace > Обновление платформы.
- До перехода на PHP 8.х не были уставлены обновления сторонних решений (они в названии имеют точку) на странице Marketplace > Обновление решений.
- Разработчик не обновил модуль для поддержки PHP 8.
Основные действия по исправлению ошибок после обновления PHP до 8.х:
- Вернуться на предыдущую версию PHP 7.x, когда все работало, обновить компоненты системы и сторонние модули, а затем повторно обновить версию PHP до 8.х.
- Если предыдущие действия не исправили ошибки, то обратиться к разработчику модуля – смотрите раздел выше Куда обращаться в случае ошибок.
- Временно отключить модуль с ошибкой, переместив его из директории
/bitrix/modules
. - Удалить стороннее решение с ошибкой.
Стоить отметить, что в примерах даны лишь решения ошибок для конкретного модуля. Каждая ошибка должна рассматриваться разработчиком индивидуально.
[Ux11] Ошибка описания модуля «name.module». Не установлено соединение с сервером обновлений. [Ux11] Ошибка описания модуля «name.module».
Ошибка может появиться после повышения версии PHP до 8.0 и выше. Сайт при этом работает, но установить или обновить другие решения нельзя, пока сохраняется ошибка.
Решение проблемы:
Исправление в общем случае будет таким: в файле /bitrix/modules/<имя.модуля>/install/index.php
код:
function <имя.модуля>()
заменить на:
function __construct()
При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php.
Решение проблемы:
Подключиться по FTP/SFTP или зайти в панель хостинга, включить вывод ошибок в файле /bitrix/.settings.php
:
'debug' => true,
После чего на сайте будет выведен текст ошибки:
Пример ошибки
Non-static method SuperFunctionsCSuperModRep::checkBack() cannot be called statically (0) /home/bitrix/modules/super.mod/lib/functions/CSuperModRep.php:52 #0: SuperFunctionsCSuperModRep::checkRepActive() /home/bitrix/modules/super.mod/classes/general/CModEvents.php:1621 #1: CModEvents::OnPageStartHandler() /home/bitrix/modules/main/classes/general/module.php:480 #2: ExecuteModuleEventEx(array) /home/bitrix/modules/main/include.php:163 #3: require_once(string) /home/bitrix/modules/main/include/prolog_before.php:14 #4: require_once(string) /home/bitrix/modules/main/include/prolog.php:10 #5: require_once(string) /home/bitrix/header.php:1 #6: require(string) /home/index.php:1
В примере видно, что ошибку отдает сторонний метод CSuperModRep::checkBack()
решения super.mod.
Исправление в общем случае будет таким: в коде checkBack()
нужно правильно объявить статическую функцию:
function checkBack()
заменить на:
public static function checkBack()
PHP Fatal error: $GLOBALS can only be modified using the $GLOBALS[$name] = $value syntax in /www/bitrix/modules/main/tools.php
Данная ошибка может появиться после повышения версии PHP до 8.x в случае, если не были установлены все доступные обновления платформы на версии PHP 7.x.
Решение проблемы:
Эта ошибка была исправлена в обновлении главного модуля main 22.100.0
.
Поэтому необходимо понизить версию PHP до 7.x, произвести обновление продукта и модулей до последней доступной версии. И только потом повысить версию PHP до 8.х.
[TypeError] call_user_func_array(): Argument #1 ($callback) must be a valid callback, non-static method COMPBXEEventHandlers::AdminContextMenuShow() cannot be called statically (0)…
Эта ошибка может появиться после повышения версии PHP до 8, но уже не очень очевидна:
Пример ошибки
[TypeError] call_user_func_array(): Argument #1 ($callback) must be a valid callback, non-static method COMPBXEEventHandlers::AdminContextMenuShow() cannot be called statically (0) /var/www//bitrix/modules/main/classes/general/module.php:480 #0: ExecuteModuleEventEx /var/www/bitrix/modules/main/interface/admin_ui_list.php:1983 #1: CAdminUiContextMenu->Show /var/www/bitrix/modules/main/interface/admin_ui_list.php:1168 #2: CAdminUiList->ShowContext /var/www/bitrix/modules/main/interface/admin_ui_list.php:630 #3: CAdminUiList->DisplayFilter /var/www/bitrix/modules/iblock/admin/iblock_element_admin.php:5217 #4: include(string) /var/www/bitrix/admin/cat_product_admin.php:3
Из текста ошибки сразу не узнать директорию модуля, но данный метод COMPBXEEventHandlers::AdminContextMenuShow()
принадлежит стороннему модулю.
Решение проблемы:
Исправление в общем случае будет таким: в коде AdminContextMenuShow()
нужно правильно объявить статическую функцию:
function AdminContextMenuShow()
заменить на:
public static function AdminContextMenuShow()
Белый экран после повышения версии PHP до 8.х, а на PHP 7.4 все работает
Такая ошибка может быть из-за того, что в настройках PHP установлен параметр short_open_tag = Off
.
Решение проблемы:
- Нужно задать в конфигурационном файле PHP:
short_open_tag = On
. - Проверить логи веб-сервера на предмет ошибок и устранить их.
- Также можно просмотреть ошибки на странице сайта с белым экраном: нажать правую кнопку мыши и выбрать Просмотр кода страницы, пролистать страницу вниз и проверить имеются ли ошибки на ней.
Спасибо, помогло!
Спасибо
Это не то, что я ищу
Написано очень сложно и непонятно
Есть устаревшая информация
Слишком коротко, мне не хватает информации
Мне не нравится, как это работает
Всем привет
После обновления битрикса, перестали работать сайт на мультисайтовости и главный сайт , хотя третий сайт который на мультисайтовости, все ок, работает. Было у кого то такое? Обновлял битрикс каждый раз и сегодня обновил.
Ошибку выдает такую:
[Error]
Undefined class constant 'INFO_NOT_AVAILABLE' (0)
/home/bitrix/www/bitrix/modules/aspro.max/classes/general/CMaxCache.php:523
#0: CMaxCache::GeoIp_GetGeoData(string, string)
/home/bitrix/www/bitrix/modules/aspro.max/classes/general/CMaxRegionality.php:306
#1: CMaxRegionality::getRealRegionByIP()
/home/bitrix/www/bitrix/components/aspro/regionality.list.max/component.php:13
#2: include(string)
/home/bitrix/www/bitrix/modules/main/classes/general/component.php:607
#3: CBitrixComponent->__includeComponent()
/home/bitrix/www/bitrix/modules/main/classes/general/component.php:684
#4: CBitrixComponent->includeComponent(string, array, boolean, boolean)
/home/bitrix/www/bitrix/modules/main/classes/general/main.php:1055
#5: CAllMain->IncludeComponent(string, string, array, boolean, array)
/home/bitrix/www/bitrix/modules/aspro.max/lib/functions/CAsproMax.php:84
#6: AsproFunctionsCAsproMax::showRegionList()
/home/bitrix/ext_www/zapad-vostok2022.ru/local/templates/aspro_max/page_blocks/mega_menu_1.php:153
#7: include_once(string)
/home/bitrix/www/bitrix/modules/aspro.max/classes/general/CMax.php:201
#8: CMax::ShowPageType(string)
/home/bitrix/ext_www/zapad-vostok2022.ru/include/header_include/top_wrapper1.php:3
#9: include_once(string)
/home/bitrix/ext_www/zapad-vostok2022.ru/local/templates/aspro_max/header.php:41
#10: include_once(string)
/home/bitrix/www/bitrix/modules/main/include/prolog_after.php:107
#11: require(string)
/home/bitrix/www/bitrix/modules/main/include/prolog.php:11
#12: require_once(string)
/home/bitrix/www/bitrix/header.php:1
#13: require(string)
/home/bitrix/ext_www/zapad-vostok2022.ru/index.php:1