Курсы обучения
+7 (351) 777-80-70

Что делать с ошибкой SQLSTATE[HY000] [2002] No such file or directory (2002) intec.core? Часто задаваемые вопросы

В новом обновлении файлы Битрикса конфликтуют со старыми версиями нашего решением.
Чтобы это исправить, мы доработали модуль Intec.Core.

Для восстановления работы сайта нужно:
  1. Пройти по пути /bitrix/modules/intec.core/classes/
  2. Открыть файл Core.php
  3. Заменить его содержимое на код, представленный ниже
  4. Сохранить файл.


 <?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');

Наши решения