Я полный ноль в этом, прошу помочь…
Развернул резервную копию сайта на виртуальной машине…и сразу же появилась данная ошибка:
[ArgumentCountError]
Too few arguments to function CAllMain::IncludeComponent(), 1 passed in /home/bitrix/www/bitrix/templates/.default/header.php on line 125 and at least 2 expected (0)
/home/bitrix/www/bitrix/modules/main/classes/general/main.php:976
#0: CAllMain->IncludeComponent(string)
/home/bitrix/www/bitrix/templates/.default/header.php:125
#1: require_once(string)
/home/bitrix/www/bitrix/templates/main/header.php:5
#2: include_once(string)
/home/bitrix/www/bitrix/modules/main/include/prolog_after.php:106
#3: require(string)
/home/bitrix/www/bitrix/modules/main/include/prolog.php:11
#4: require_once(string)
/home/bitrix/www/bitrix/header.php:1
#5: require(string)
/home/bitrix/www/index.php:2
-
Вопрос заданболее трёх лет назад
-
466 просмотров
Пригласить эксперта
Покажите что у вас в строке
/home/bitrix/www/bitrix/templates/.default/header.php on line 125
Но вероятно, подключаемая область, её нужно подключить так:
$APPLICATION->IncludeComponent("НАЗВАНИЕ", "", array());
-
Показать ещё
Загружается…
04 июн. 2023, в 12:23
30000 руб./за проект
04 июн. 2023, в 12:18
20000 руб./за проект
04 июн. 2023, в 12:07
2000 руб./за проект
Минуточку внимания
Проверьте не используют ли конфигурационные файлы битрикса /bitrix/php_interface/dbconn.php
и /bitrix/.settings.php
библиотеку mysql
. Она не поддерживается уже давно, но в php7 уже нет механизма совместимости с ней.
Вам нужно перевести работу на библиотеку mysqli
для этого в файле /bitrix/php_interface/dbconn.php
вам нужно прописать строку:
define("BX_USE_MYSQLI", true);
И на всяки случай проверьте значение переменной $DBHost
для работы на виртуалке от битрикса лучше всего чтобы было так:
$DBHost = "localhost";
А в файле /bitrix/.settings.php
найти массив connections
и в параметре className
прописать вместо \Bitrix\Main\DB\MysqlConnection
класс \Bitrix\Main\DB\MysqliConnection
. Должно получиться так:
'connections' =>
array (
'value' =>
array (
'default' =>
array (
'className' => '\Bitrix\Main\DB\MysqliConnection',
'host' => 'localhost',
'database' => 'db_name',
'login' => 'db_login',
'password' => 'db_password',
'options' => 2,
),
),
'readonly' => true,
),
Как перевести сайт на Битриксе на новую версию php7. Решение с ошибками mysql
Вышел php7 и многие заявляют, что производительность 1С-Bitrix на этой версии php возросла.
Но если обновить php, то сайт перестанет работать.
Так же если вы развернули сайт несколько лет назад, ещё на Битрикс машине, например, CentOS-6-amd64-bitrix, то на большинстве хостингов уже нет возможности установить CentOS-6, есть только Битрикс машина CentOS-7. Но если развернуть бекап на свежей битрикс машине сайт снова не заработает.
Будет получен следующий набор ошибок при попытке открыть сайт:
[Error] Call to undefined function BitrixMainDBmysql_real_escape_string() (0) /home/bitrix/www/bitrix/modules/main/lib/db/mysqlsqlhelper.php:21 #0: BitrixMainDBMysqlSqlHelper->forSql(string) /home/bitrix/www/bitrix/modules/main/lib/db/sqlexpression.php:111 #1: BitrixMainDBSqlExpression->execPlaceholders(array) #2: preg_replace_callback(string, array, string) /home/bitrix/www/bitrix/modules/main/lib/db/sqlexpression.php:68 #3: BitrixMainDBSqlExpression->compile() /home/bitrix/www/bitrix/modules/main/classes/general/usertype.php:2913 #4: CAllSQLWhere->_ExprEQ(string, object) /home/bitrix/www/bitrix/modules/main/classes/general/usertype.php:3557 #5: CAllSQLWhere->addStringFilter(array, boolean, string, string, object) /home/bitrix/www/bitrix/modules/main/classes/general/usertype.php:3216 #6: CAllSQLWhere->GetQueryEx(array, array) /home/bitrix/www/bitrix/modules/main/classes/general/usertype.php:3101 #7: CAllSQLWhere->GetQuery(array) /home/bitrix/www/bitrix/modules/main/lib/entity/query.php:1119 #8: BitrixMainEntityQuery->buildJoin() /home/bitrix/www/bitrix/modules/main/lib/entity/query.php:1297 #9: BitrixMainEntityQuery->buildQuery() /home/bitrix/www/bitrix/modules/main/lib/entity/query.php:486 #10: BitrixMainEntityQuery->exec() /home/bitrix/www/bitrix/modules/main/lib/entity/datamanager.php:256 #11: BitrixMainEntityDataManager::getList(array) /home/bitrix/www/bitrix/modules/highloadblock/admin/menu.php:14 #12: include(string) /home/bitrix/www/bitrix/modules/main/interface/admin_lib.php:640 #13: CAdminMenu->_IncludeMenu(string) /home/bitrix/www/bitrix/modules/main/interface/admin_lib.php:418 #14: CAdminMenu->Init(array) /home/bitrix/www/bitrix/modules/main/interface/prolog_main_admin.php:30 #15: require_once(string) /home/bitrix/www/bitrix/modules/main/include/prolog_admin_after.php:15 #16: require(string) /home/bitrix/www/bitrix/modules/main/admin/update_system.php:31 #17: require_once(string) /home/bitrix/www/bitrix/admin/update_system.php:2
Или другие вариантов ошибок с подключением к Базе данных
Все дело в том, что в php7 произошел переход на Mysqli. И чтобы заработал сайт, достаточно внести настройки в 2 файла движка Битрикс.
В файл /bitrix/php_interface/dbconn.php
Добавить: define(«BX_USE_MYSQLI», true);
И в файл: /bitrix/.settings.php
Исправить строку: ‘className’ => ‘\Bitrix\Main\DB\MysqlConnection’, на ‘className’ => ‘\Bitrix\Main\DB\MysqliConnection’,
И ваш сайт на Битрикс будет работать на php7!
Оставить заявку
Я согласен на обработку персональных данных
Денис Бунаков
C 2012 года являюсь Битрикс Программистом.
Программист 1С:Битрикс – это веб-разработчик с узким профилем, который работает непосредственно с продукцией от компании 1С.
Переход битрикс на php7
[ParseError]
syntax error, unexpected end of file (0)
/home/site/docs/bitrix/modules/main/classes/mysql/agent.php(163) : eval()'d code:1
#0: CAgent::ExecuteAgents(string)
/home/site/docs/bitrix/modules/main/classes/mysql/agent.php:40
#1: CAgent::CheckAgents()
/home/site/docs/bitrix/modules/main/include.php:264
#2: require_once(string)
/home/site/docs/bitrix/modules/main/include/prolog_before.php:14
#3: require_once(string)
/home/site/docs/bitrix/modules/main/include/prolog.php:10
#4: require_once(string)
/home/site/docs/bitrix/header.php:1
#5: require(string)
/home/site/docs/index.php:2
Проявляется редко, причем не представляется возможным предугадать когда она появится, т.е. могу сидеть в админке несколько часов и ни разу, а могу из закладок один раз перейти на сайт и проявится. В техподдержку битрикс обращался, два дня переговоров, предоставил админ доступ, чего-то там смотрели и … «На данный момент не удается воспроизвести ошибку». На этом общение было закончено. В БД ошибок нет, как нет к сожалению и резервной доошибочной копии этой БД. Дату появления ошибки не знаю (и никто не знает). Может быть у кого-то было нечто похожее, подскажите в какую сторону смотреть (кроме указанных строк ошибок, там ничего подозрительного не высмотрел).
Ошибка несовместимости Битрикс и PHP 7.1+
При установке сайта на Битрикс на сервер с PHP 7.1 и выше сталкиваемся со следующей проблемой: в административном интерфейсе отваливается стартовый рабочий стол.
Битрикс оповещает об этом следующим экраном:
Идем в файл .settings.php, который находится в 16+ версии в следующей локации:
/bitrix/.settings.php
В конфиг-файле включаем вывод ошибок:
'exception_handling' => array ( 'value' => array ( 'debug' => false,
После этого обновляем страницу административного интерфейса и видим вот это:
Таким образом, Битрикс хочет нам сказать, что у него возникла проблема несовместимости при обработке текстовых переменных в следующих скриптах:
[Error] [] operator not supported for strings (0) /var/www/alkc/data/www/alkc/bitrix/modules/main/classes/general/checklist.php:476 #0: CCheckListResult::GetList(array, array) /var/www/alkc/data/www/alkc/bitrix/modules/main/classes/general/checklist.php:52 #1: CCheckList->__construct() /var/www/alkc/data/www/alkc/bitrix/gadgets/bitrix/admin_checklist/index.php:17 #2: include(string) /var/www/alkc/data/www/alkc/bitrix/components/bitrix/desktop/include.php:105 #3: BXGadget::GetGadgetContent(array, array) /var/www/alkc/data/www/alkc/bitrix/components/bitrix/desktop/component.php:823 #4: include(string) /var/www/alkc/data/www/alkc/bitrix/modules/main/classes/general/component.php:548 #5: CBitrixComponent->__includeComponent() /var/www/alkc/data/www/alkc/bitrix/modules/main/classes/general/component.php:600 #6: CBitrixComponent->includeComponent(string, array, boolean) /var/www/alkc/data/www/alkc/bitrix/modules/main/classes/general/main.php:1035 #7: CAllMain->IncludeComponent(string, string, array, boolean, array) /var/www/alkc/data/www/alkc/bitrix/modules/main/interface/desktop.php:35 #8: require(string) /var/www/alkc/data/www/alkc/bitrix/admin/index.php:2
Чтобы исправить эту несовместимость идем по следующим адресам:
/bitrix/modules/iblock/classes/general/iblockproperty.php, здесь ищем 20 строку и в ней исправляем:
Было:
$arSqlSearch = "";
Стало:
$arSqlSearch = [];
Теперь идем в: /bitrix/modules/main/classes/general/checklist.php и вносим исправления здесь на 472 строчке, выполняем все так же:
Было:
$arSqlWhere = "";
Стало:
$arSqlWhere = [];
Ура! Все заработало.