• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/session/sessionconfigurationresolver.php
  • Класс: BitrixMainSessionSessionConfigurationResolver
  • Вызов: SessionConfigurationResolver::resolve
public function resolve(): void
{
	$sessionConfig = $this->getSessionConfig();
	$generalOptions = $sessionConfig['handlers']['general'];
	$generalHandler = $this->buildSessionHandlerByOptions($generalOptions['type'], $generalOptions);

	if ($sessionConfig['mode'] === self::MODE_DEFAULT)
	{
		$this->session = new Session($generalHandler);
		$this->kernelSession = new KernelSessionProxy($this->session);
	}
	elseif ($sessionConfig['mode'] === self::MODE_SEPARATED)
	{
		if (empty($sessionConfig['handlers']['kernel']))
		{
			throw new NotSupportedException('There is no handler for kernel session');
		}
		if (empty($sessionConfig['handlers']['general']))
		{
			throw new NotSupportedException('There is no handler for general session');
		}
		if ($sessionConfig['handlers']['kernel'] !== 'encrypted_cookies')
		{
			throw new NotSupportedException('Invalid settings. Kernel session works only with "encrypted_cookies"');
		}

		$this->session = new Session($generalHandler);
		$this->kernelSession = new KernelSession($sessionConfig['lifetime'] ?? 0);
		LegacyLazySessionStart::register();
		$this->session->enableLazyStart();
		if (!empty($sessionConfig['debug']))
		{
			$this->session->enableDebug();

			$debugger = $this->session->getDebugger();
			$debugger->setMode($sessionConfig['debug']);
			$debugger->storeConfig($sessionConfig);
		}
	}

	if (isset($sessionConfig['ignoreSessionStartErrors']) && $sessionConfig['ignoreSessionStartErrors'] === true)
	{
		$this->session->enableIgnoringSessionStartErrors();
	}
}