2021.08.27
Что делать с ошибкой SQLSTATE[HY000] [2002] No such file or directory (2002) intec.core? - Линейка решений INTEC: Universe
В новом обновлении файлы Битрикса конфликтуют со старыми версиями нашего решением.
Чтобы это исправить, мы доработали модуль Intec.Core.
Для восстановления работы сайта нужно обновить модуль Intec.Core через раздел админки Marketplace или вручную как описано ниже:
- Пройти по пути /bitrix/modules/intec.core/classes/
- Открыть файл Core.php
- Заменить его содержимое на код, представленный ниже
- Сохранить файл.
<?php
namespace intec;
require(__DIR__ . '/CoreBase.php');
use intec\core\CoreBase;
use intec\core\di\Container;
use intec\core\helpers\Encoding;
class Core extends CoreBase
{
}
spl_autoload_register(['intec\Core', 'autoload'], true, true);
Core::$classes = require(__DIR__.'/classes.php');
Core::$container = new Container();
// global $DB;
$settingsDB = include($_SERVER["DOCUMENT_ROOT"]."/bitrix/.settings.php");
$settingsDB = $settingsDB["connections"]["value"]["default"];
$DBHostParts = explode(':', $settingsDB["host"]);
$DBHostAddress = $DBHostParts[0];
$DBHostPort = isset($DBHostParts[1]) ? $DBHostParts[1] : null;
(new core\base\Application([
'id' => 'intec.core',
'basePath' => $_SERVER['DOCUMENT_ROOT'],
'charset' => Encoding::resolve(SITE_CHARSET),
'components' => [
'db' => [
'dsn' => 'mysql:host='.$DBHostAddress.';dbname='.$settingsDB["database"].(!empty($DBHostPort) ? ';port='.$DBHostPort : null),
'username' => $settingsDB["login"],
'password' => $settingsDB["password"],
'charset' => Encoding::resolve(SITE_CHARSET, Encoding::TYPE_DATABASE)
]
]
]));
unset($DBHostParts);
unset($DBHostAddress);
unset($DBHostPort);
Core::setAlias('@root/linked', dirname(dirname(dirname(dirname(__DIR__)))));
Core::setAlias('@bitrix', '@root'.BX_ROOT);
Core::setAlias('@upload', '@root/upload');
Core::setAlias('@modules', '@bitrix/modules');
Core::setAlias('@resources', '@bitrix/resources');
Core::setAlias('@templates', '@bitrix/templates');
Core::setAlias('@themes', '@bitrix/themes');
Core::setAlias('@intec/core/module', dirname(__DIR__));
Core::setAlias('@intec/core/libraries', '@intec/core/module/libraries');
Core::setAlias('@intec/core/resources', '@resources/'.Core::$app->id);
require(__DIR__.'/web.php');
Наши решения