Ошибки при обновлении Битрикс
Последние записи
Хостинг для сайта
Если выбираете хостинг под проект — советую Timeweb. Современная инфраструктура, широкий выбор тарифов от стартовых до VPS под нагрузку, отзывчивая техподдержка, которая отвечает по существу, а не отписками. Я сам держу на нём часть своих проектов и рекомендую клиентам.
Перейти Партнёрская ссылка. Для вас цена не меняется.Типичные ошибки в Битриксе и как их исправить
Справочник по ошибкам, которые чаще всего встречаются при работе с 1С-Битрикс: конфликты ядра, несовместимость модулей, проблемы с обновлениями и сетевыми настройками. По каждой ошибке — путь к файлу и готовое решение.
1. [Ux11] Ошибка описания модуля «название.модуля»
Сообщение: [Ux11] Ошибка описания модуля "название.модуля". Не установлено соединение с сервером обновлений. [Ux11] Ошибка описания модуля "название.модуля"
Сначала попробуйте обновить модуль до последней версии. Если не помогло — в файле /bitrix/modules/название.модуля/install/index.php замените конструкцию function название_модуля() на function __construct().
2. call_user_func_array(): Argument #1 ($function) must be a valid callback
Сообщение: call_user_func_array(): Argument #1 ($function) must be a valid callback, non-static method НазваниеМодуля::МетодКласса() cannot be called statically (0)
Найдите модуль по пути /bitrix/modules/название.модуля, откройте метод класса, который вызывает ошибку, и добавьте к его объявлению ключевое слово static.
3. Call to undefined method CAllCurrencyLang::CurrencyFormat()
В файле /bitrix/modules/aspro.next/classes/general/CNext.php или аналогичном замените CAllCurrencyLang::CurrencyFormat на CCurrencyLang::CurrencyFormat.
4. Cannot declare class Bitrix\Iblock\ElementTable, because the name is already in use
Сообщение: Fatal error: Cannot declare class Bitrix\Iblock\ElementTable, because the name is already in use или аналогичное для SectionTable.
Проверьте наличие файла /bitrix/modules/iblock/lib/elementtable.php. Если он существует — удалите файл /bitrix/modules/iblock/lib/element.php. Для SectionTable переименуйте или удалите файл /bitrix/modules/iblock/lib/section.php.
5. Undefined class constant INFO_NOT_AVAILABLE
Сообщение: Undefined class constant 'INFO_NOT_AVAILABLE' (0)
Часто возникает в файле /home/bitrix/www/bitrix/modules/aspro.max/classes/general/CMaxCache.php на строке 523 и аналогичных ему.
Перейдите в класс Аспро с ошибкой, найдите \Bitrix\Main\Service\GeoIp\Manager::INFO_NOT_AVAILABLE и замените на null:
// Было
if ($obBitrixGeoIPResult !== \Bitrix\Main\Service\GeoIp\Manager::INFO_NOT_AVAILABLE) {
// Стало
if ($obBitrixGeoIPResult !== null) {
6. Call to undefined method CMain::reinitPath()
Сообщение: Call to undefined method CMain::reinitPath()
Метод reinitPath() удалён из ядра. Замените вызов вручную:
// Было
$APPLICATION->reinitPath();
// Стало
$APPLICATION->sDocPath2 = GetPagePath(false, true);
$APPLICATION->sDirPath = GetDirPath($APPLICATION->sDocPath2);
7. Mysql query error: (1146) Table '#DB_NAME#.b_sale_trading_platform' doesn't exist
Ошибка возникает при некорректном обновлении ядра. Перейдите в /bitrix/modules/sale/lib/ и удалите или закомментируйте файл tradingplatform.php.
8. Cannot declare class Bitrix\Highloadblock\HighloadBlockLangTable, because the name is already in use
Ещё одна ошибка некорректного обновления ядра. Перейдите в /bitrix/modules/highloadblock/lib и убедитесь, что там есть оба файла: highloadblocklang.php и highloadblocklangtable.php. Удалите тот, что без table в названии.
9. После обновления пропало отображение свойств в старых заказах
Симптом: из списка заказов в админке пропало отображение свойств заказа, причём только для заказов, созданных до обновления.
Причина — отсутствие записи ORDER в поле ENTITY_TYPE таблицы b_sale_order_props_value. Выполните скрипт восстановления:
$rs = $DB->Query("SELECT * FROM b_sale_order_props_value WHERE ENTITY_TYPE = ''");
while ($prop = $rs->Fetch()) {
$IDS[] = $prop['ID'];
}
$connection = \Bitrix\Main\Application::getConnection('default');
$sqlHelper = $connection->getSqlHelper();
$connection->executeSql("UPDATE b_sale_order_props_value SET ENTITY_TYPE = 'ORDER' WHERE ID IN (" . implode(",", $IDS) . ")");
10. Ошибка соединения с сервером обновлений: getaddrinfo for www.1c-bitrix.ru failed
Сообщение: [0] php_network_getaddresses: getaddrinfo for www.1c-bitrix.ru failed: Name or service not known. Нет соединения с сервером обновлений.
Причина — сервер не может определить DNS-имя www.1c-bitrix.ru. Обычно это пустой или нерабочий файл /etc/resolv.conf. Решение — прописать публичные DNS-серверы вручную.
Шаг 1. Подключитесь к серверу по SSH от пользователя root или через sudo.
Шаг 2. Откройте файл сетевых настроек DNS:
sudo nano /etc/resolv.conf
Шаг 3. Если файл пустой или содержит нерабочие локальные адреса — добавьте публичные DNS-серверы Google или Яндекс:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 77.88.8.8
Шаг 4. Сохраните файл (Ctrl+O, затем Enter) и выйдите (Ctrl+X). Проверьте, что адрес начал определяться:
ping www.1c-bitrix.ru
Шаг 5. Перезапустите веб-сервер и PHP-FPM, чтобы настройки применились ко всем службам:
# CentOS / RHEL / AlmaLinux
sudo systemctl restart httpd
# Ubuntu / Debian
sudo systemctl restart apache2
# PHP-FPM — на любой ОС
sudo systemctl restart php-fpm
Если используется Nginx с PHP-FPM, вместо httpd или apache2 перезапускайте nginx и php-fpm. После этого обновление из админки и установка модулей должны заработать.
Если ping после правки resolv.conf всё равно не проходит — проверьте, что на сервере есть доступ в интернет на уровне провайдера или фаервола, и что провайдер не блокирует исходящие DNS-запросы.
Комментарии