‪TYPO3CMS  11.5
Bootstrap.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
16 namespace ‪TYPO3\CMS\Core\Core;
17 
18 use Composer\Autoload\ClassLoader;
19 use Composer\InstalledVersions;
20 use Doctrine\Common\Annotations\AnnotationReader;
21 use Doctrine\Common\Annotations\AnnotationRegistry;
22 use Psr\Container\ContainerInterface;
23 use Psr\EventDispatcher\EventDispatcherInterface;
24 use Psr\Http\Message\ServerRequestInterface;
35 use TYPO3\CMS\Core\Configuration\ConfigurationManager;
39 use TYPO3\CMS\Core\DependencyInjection\ContainerBuilder;
43 use TYPO3\CMS\Core\Package\Cache\ComposerPackageArtifact;
47 use TYPO3\CMS\Core\Package\PackageManager;
48 use TYPO3\CMS\Core\Page\PageRenderer;
52 use TYPO3\PharStreamWrapper\Behavior;
53 use TYPO3\PharStreamWrapper\Interceptor\ConjunctionInterceptor;
54 use TYPO3\PharStreamWrapper\Interceptor\PharMetaDataInterceptor;
55 use TYPO3\PharStreamWrapper\Manager;
56 use TYPO3\PharStreamWrapper\PharStreamWrapper;
57 
70 {
79  public static function ‪init(
80  ClassLoader $classLoader,
81  bool $failsafe = false
82  ): ContainerInterface {
83  $requestId = new ‪RequestId();
84 
85  static::initializeClassLoader($classLoader);
88  }
89 
90  static::startOutputBuffering();
91 
92  $configurationManager = static::createConfigurationManager();
93  if (!static::checkIfEssentialConfigurationExists($configurationManager)) {
94  $failsafe = true;
95  }
96  static::populateLocalConfiguration($configurationManager);
97 
98  $logManager = new ‪LogManager((string)$requestId);
99  // LogManager is used by the core ErrorHandler (using GeneralUtility::makeInstance),
100  // therefore we have to push the LogManager to GeneralUtility, in case there
101  // happen errors before we call GeneralUtility::setContainer().
102  GeneralUtility::setSingletonInstance(LogManager::class, $logManager);
103 
104  static::initializeErrorHandling();
105  static::initializeIO();
106 
107  $disableCaching = $failsafe ? true : false;
108  $coreCache = static::createCache('core', $disableCaching);
109  $packageCache = static::createPackageCache($coreCache);
110  $packageManager = static::createPackageManager(
111  $failsafe ? FailsafePackageManager::class : PackageManager::class,
112  $packageCache
113  );
114 
115  static::setDefaultTimezone();
116  static::setMemoryLimit();
117 
118  $assetsCache = static::createCache('assets', $disableCaching);
119  $dependencyInjectionContainerCache = static::createCache('di');
120 
121  $bootState = new \stdClass();
122  $bootState->done = false;
123  // After a deprecation grace period, only one of those flag will remain, likely ->done
124  $bootState->complete = false;
125  $bootState->cacheDisabled = $disableCaching;
126 
127  $builder = new ContainerBuilder([
128  ClassLoader::class => $classLoader,
129  ApplicationContext::class => ‪Environment::getContext(),
130  ConfigurationManager::class => $configurationManager,
131  LogManager::class => $logManager,
132  RequestId::class => $requestId,
133  'cache.di' => $dependencyInjectionContainerCache,
134  'cache.core' => $coreCache,
135  'cache.assets' => $assetsCache,
136  PackageManager::class => $packageManager,
137 
138  // @internal
139  'boot.state' => $bootState,
140  ]);
141 
142  $container = $builder->createDependencyInjectionContainer($packageManager, $dependencyInjectionContainerCache, $failsafe);
143 
144  // Push the container to GeneralUtility as we want to make sure its
145  // makeInstance() method creates classes using the container from now on.
146  GeneralUtility::setContainer($container);
147 
148  // Reset LogManager singleton instance in order for GeneralUtility::makeInstance()
149  // to proxy LogManager retrieval to ContainerInterface->get() from now on.
150  GeneralUtility::removeSingletonInstance(LogManager::class, $logManager);
151 
152  // Push PackageManager instance to ExtensionManagementUtility
154 
155  if ($failsafe) {
156  $bootState->done = true;
157  $bootState->complete = true;
158  return $container;
159  }
160 
161  $eventDispatcher = $container->get(EventDispatcherInterface::class);
162  PageRenderer::setCache($assetsCache);
164  static::loadTypo3LoadedExtAndExtLocalconf(true, $coreCache);
165  static::unsetReservedGlobalVariables();
166  $bootState->done = true;
167  static::loadBaseTca(true, $coreCache);
168  static::checkEncryptionKey();
169  $bootState->complete = true;
170  $eventDispatcher->dispatch(new ‪BootCompletedEvent($disableCaching));
171 
172  return $container;
173  }
174 
181  public static function ‪startOutputBuffering()
182  {
183  ob_start();
184  }
185 
195  public static function ‪baseSetup()
196  {
197  if (!defined('TYPO3_REQUESTTYPE')) {
198  throw new \RuntimeException('No Request Type was set, TYPO3 does not know in which context it is run.', 1450561838);
199  }
202  }
203  }
204 
211  public static function ‪initializeClassLoader(ClassLoader $classLoader)
212  {
214 
216  AnnotationRegistry::registerLoader([$classLoader, 'loadClass']);
217 
218  // Annotations used in unit tests
219  AnnotationReader::addGlobalIgnoredName('test');
220 
221  // Annotations that control the extension scanner
222  AnnotationReader::addGlobalIgnoredName('extensionScannerIgnoreFile');
223  AnnotationReader::addGlobalIgnoredName('extensionScannerIgnoreLine');
224  }
225 
234  public static function ‪checkIfEssentialConfigurationExists(ConfigurationManager $configurationManager): bool
235  {
236  return file_exists($configurationManager->getLocalConfigurationFileLocation())
237  && (‪Environment::isComposerMode() || file_exists(‪Environment::getLegacyConfigPath() . '/PackageStates.php'));
238  }
239 
249  public static function ‪createPackageManager($packageManagerClassName, ‪PackageCacheInterface $packageCache): PackageManager
250  {
251  $dependencyOrderingService = GeneralUtility::makeInstance(DependencyOrderingService::class);
253  $packageManager = new $packageManagerClassName($dependencyOrderingService);
254  $packageManager->setPackageCache($packageCache);
255  $packageManager->initialize();
256 
257  return $packageManager;
258  }
259 
267  {
269  return new ‪PackageStatesPackageCache(‪Environment::getLegacyConfigPath() . '/PackageStates.php', $coreCache);
270  }
271 
272  $composerInstallersPath = InstalledVersions::getInstallPath('typo3/cms-composer-installers');
273  if ($composerInstallersPath === null) {
274  throw new \RuntimeException('Package "typo3/cms-composer-installers" not found. Replacing the package is not allowed. Fork the package instead and pull in the fork with the same name.', 1636145677);
275  }
276 
277  return new ComposerPackageArtifact(dirname($composerInstallersPath));
278  }
279 
287  public static function ‪loadTypo3LoadedExtAndExtLocalconf($allowCaching = true, ‪FrontendInterface $coreCache = null)
288  {
289  if ($allowCaching) {
290  $coreCache = $coreCache ?? GeneralUtility::makeInstance(CacheManager::class)->getCache('core');
291  }
292  ‪ExtensionManagementUtility::loadExtLocalconf($allowCaching, $coreCache);
293  }
294 
301  public static function ‪createConfigurationManager(): ConfigurationManager
302  {
303  return new ConfigurationManager();
304  }
305 
313  protected static function ‪populateLocalConfiguration(ConfigurationManager $configurationManager)
314  {
315  $configurationManager->exportConfiguration();
316  }
317 
330  public static function ‪createCache(string $identifier, bool $disableCaching = false): ‪FrontendInterface
331  {
332  $cacheConfigurations = ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'] ?? [];
333  $cacheConfigurations['di']['frontend'] = PhpFrontend::class;
334  $cacheConfigurations['di']['backend'] = ContainerBackend::class;
335  $cacheConfigurations['di']['options'] = [];
336  $configuration = $cacheConfigurations[$identifier] ?? [];
337 
338  $frontend = $configuration['frontend'] ?? VariableFrontend::class;
339  $backend = $configuration['backend'] ?? Typo3DatabaseBackend::class;
340  $options = $configuration['options'] ?? [];
341 
342  if ($disableCaching) {
343  $backend = NullBackend::class;
344  $options = [];
345  }
346 
347  $backendInstance = new $backend('production', $options);
348  if (!$backendInstance instanceof ‪BackendInterface) {
349  throw new ‪InvalidBackendException('"' . $backend . '" is not a valid cache backend object.', 1545260108);
350  }
351  if (is_callable([$backendInstance, 'initializeObject'])) {
352  $backendInstance->initializeObject();
353  }
354 
355  $frontendInstance = new $frontend($identifier, $backendInstance);
356  if (!$frontendInstance instanceof ‪FrontendInterface) {
357  throw new ‪InvalidCacheException('"' . $frontend . '" is not a valid cache frontend object.', 1545260109);
358  }
359  if (is_callable([$frontendInstance, 'initializeObject'])) {
360  $frontendInstance->initializeObject();
361  }
362 
363  return $frontendInstance;
364  }
365 
369  protected static function ‪setDefaultTimezone()
370  {
371  $timeZone = ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['phpTimeZone'];
372  if (empty($timeZone)) {
373  // Time zone from the server environment (TZ env or OS query)
374  $defaultTimeZone = @date_default_timezone_get();
375  if ($defaultTimeZone !== '') {
376  $timeZone = $defaultTimeZone;
377  } else {
378  $timeZone = 'UTC';
379  }
380  }
381  // Set default to avoid E_WARNINGs with PHP > 5.3
382  date_default_timezone_set($timeZone);
383  }
384 
390  protected static function ‪initializeErrorHandling()
391  {
392  $productionExceptionHandlerClassName = ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['productionExceptionHandler'];
393  $debugExceptionHandlerClassName = ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['debugExceptionHandler'];
394 
395  $errorHandlerClassName = ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['errorHandler'];
396  $errorHandlerErrors = ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['errorHandlerErrors'] | E_USER_DEPRECATED;
397  $exceptionalErrors = ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['exceptionalErrors'];
398 
399  $displayErrorsSetting = (int)‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['displayErrors'];
400  switch ($displayErrorsSetting) {
401  case -1:
402  $ipMatchesDevelopmentSystem = GeneralUtility::cmpIP(GeneralUtility::getIndpEnv('REMOTE_ADDR'), ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask']);
403  $exceptionHandlerClassName = $ipMatchesDevelopmentSystem ? $debugExceptionHandlerClassName : $productionExceptionHandlerClassName;
404  $displayErrors = $ipMatchesDevelopmentSystem ? 1 : 0;
405  $exceptionalErrors = $ipMatchesDevelopmentSystem ? $exceptionalErrors : 0;
406  break;
407  case 0:
408  $exceptionHandlerClassName = $productionExceptionHandlerClassName;
409  $displayErrors = 0;
410  break;
411  case 1:
412  $exceptionHandlerClassName = $debugExceptionHandlerClassName;
413  $displayErrors = 1;
414  break;
415  default:
416  // Throw exception if an invalid option is set. A default for displayErrors is set
417  // in very early install tool, coming from DefaultConfiguration.php. It is safe here
418  // to just throw if there is no value for whatever reason.
419  throw new \RuntimeException(
420  'The option $TYPO3_CONF_VARS[SYS][displayErrors] is not set to "-1", "0" or "1".',
421  1476046290
422  );
423  }
424  @ini_set('display_errors', (string)$displayErrors);
425 
426  if (!empty($errorHandlerClassName)) {
427  // Register an error handler for the given errorHandlerError
428  $errorHandler = GeneralUtility::makeInstance($errorHandlerClassName, $errorHandlerErrors);
429  $errorHandler->setExceptionalErrors($exceptionalErrors);
430  if (is_callable([$errorHandler, 'setDebugMode'])) {
431  $errorHandler->setDebugMode($displayErrors === 1);
432  }
433  if (is_callable([$errorHandler, 'registerErrorHandler'])) {
434  $errorHandler->registerErrorHandler();
435  }
436  }
437  if (!empty($exceptionHandlerClassName)) {
438  // Registering the exception handler is done in the constructor
439  GeneralUtility::makeInstance($exceptionHandlerClassName);
440  }
441  }
442 
446  protected static function ‪initializeIO()
447  {
448  if (in_array('phar', stream_get_wrappers())) {
449  // destroy and re-initialize PharStreamWrapper for TYPO3 core
450  Manager::destroy();
451  Manager::initialize(
452  (new Behavior())
453  ->withAssertion(new ConjunctionInterceptor([
455  new PharMetaDataInterceptor(),
456  ]))
457  );
458 
459  stream_wrapper_unregister('phar');
460  stream_wrapper_register('phar', PharStreamWrapper::class);
461  }
462  }
463 
468  protected static function ‪setMemoryLimit()
469  {
470  if ((int)‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['setMemoryLimit'] > 16) {
471  @ini_set('memory_limit', (string)((int)‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['setMemoryLimit'] . 'm'));
472  }
473  }
474 
481  public static function ‪unsetReservedGlobalVariables()
482  {
483  unset(‪$GLOBALS['PAGES_TYPES']);
484  unset(‪$GLOBALS['TCA']);
485  unset(‪$GLOBALS['TBE_MODULES']);
486  unset(‪$GLOBALS['TBE_STYLES']);
487  unset(‪$GLOBALS['BE_USER']);
488  // Those set otherwise:
489  unset(‪$GLOBALS['TBE_MODULES_EXT']);
490  unset(‪$GLOBALS['TCA_DESCR']);
491  }
492 
502  public static function ‪loadBaseTca(bool $allowCaching = true, ‪FrontendInterface $coreCache = null)
503  {
504  if ($allowCaching) {
505  $coreCache = $coreCache ?? GeneralUtility::makeInstance(CacheManager::class)->getCache('core');
506  }
507  ‪ExtensionManagementUtility::loadBaseTca($allowCaching, $coreCache);
508  }
509 
513  protected static function ‪checkEncryptionKey()
514  {
515  if (empty(‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'])) {
516  throw new \RuntimeException(
517  'TYPO3 Encryption is empty. $GLOBALS[\'TYPO3_CONF_VARS\'][\'SYS\'][\'encryptionKey\'] needs to be set for TYPO3 to work securely',
518  1502987245
519  );
520  }
521  }
522 
532  public static function ‪loadExtTables(bool $allowCaching = true, ‪FrontendInterface $coreCache = null)
533  {
534  if ($allowCaching) {
535  $coreCache = $coreCache ?? GeneralUtility::makeInstance(CacheManager::class)->getCache('core');
536  }
537  ‪ExtensionManagementUtility::loadExtTables($allowCaching, $coreCache);
538  static::runExtTablesPostProcessingHooks();
539  }
540 
547  protected static function ‪runExtTablesPostProcessingHooks()
548  {
549  if (!empty(‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['extTablesInclusion-PostProcessing'])) {
550  trigger_error('Using the hook $TYPO3_CONF_VARS[SC_OPTIONS][GLOBAL][extTablesInclusion-PostProcessing] will be removed in TYPO3 v12.0. in favor of the new PSR-14 BootCompletedEvent', E_USER_DEPRECATED);
551  }
552  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['extTablesInclusion-PostProcessing'] ?? [] as $className) {
554  $hookObject = GeneralUtility::makeInstance($className);
555  if (!$hookObject instanceof ‪TableConfigurationPostProcessingHookInterface) {
556  throw new \UnexpectedValueException(
557  '$hookObject "' . $className . '" must implement interface TYPO3\\CMS\\Core\\Database\\TableConfigurationPostProcessingHookInterface',
558  1320585902
559  );
560  }
561  $hookObject->processData();
562  }
563  }
564 
572  public static function ‪initializeBackendUser($className = BackendUserAuthentication::class, ServerRequestInterface $request = null)
573  {
575  $backendUser = GeneralUtility::makeInstance($className);
576  // The global must be available very early, because methods below
577  // might trigger code which relies on it. See: #45625
578  ‪$GLOBALS['BE_USER'] = $backendUser;
579  $backendUser->start($request);
580  }
581 
588  public static function ‪initializeBackendAuthentication($proceedIfNoUserIsLoggedIn = false)
589  {
590  ‪$GLOBALS['BE_USER']->backendCheckLogin($proceedIfNoUserIsLoggedIn);
591  }
592 
598  public static function ‪initializeLanguageObject()
599  {
600  ‪$GLOBALS['LANG'] = GeneralUtility::makeInstance(LanguageServiceFactory::class)->createFromUserPreferences(‪$GLOBALS['BE_USER']);
601  }
602 }
‪TYPO3\CMS\Core\Localization\LanguageServiceFactory
Definition: LanguageServiceFactory.php:25
‪TYPO3\CMS\Core\DependencyInjection\Cache\ContainerBackend
Definition: ContainerBackend.php:26
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\loadExtTables
‪static loadExtTables($allowCaching=true, FrontendInterface $codeCache=null)
Definition: ExtensionManagementUtility.php:1746
‪TYPO3\CMS\Core\Core\Bootstrap\baseSetup
‪static baseSetup()
Definition: Bootstrap.php:195
‪TYPO3\CMS\Core\Core\Bootstrap\initializeIO
‪static initializeIO()
Definition: Bootstrap.php:446
‪TYPO3\CMS\Core\Core\Bootstrap\createPackageCache
‪static PackageCacheInterface createPackageCache(FrontendInterface $coreCache)
Definition: Bootstrap.php:266
‪TYPO3\CMS\Core\Core\Bootstrap\loadTypo3LoadedExtAndExtLocalconf
‪static loadTypo3LoadedExtAndExtLocalconf($allowCaching=true, FrontendInterface $coreCache=null)
Definition: Bootstrap.php:287
‪TYPO3\CMS\Core\Package\FailsafePackageManager
Definition: FailsafePackageManager.php:27
‪TYPO3\CMS\Core\Core\Bootstrap\unsetReservedGlobalVariables
‪static unsetReservedGlobalVariables()
Definition: Bootstrap.php:481
‪TYPO3\CMS\Core\Package\Cache\PackageStatesPackageCache
Definition: PackageStatesPackageCache.php:30
‪TYPO3\CMS\Core\IO\PharStreamWrapperInterceptor
Definition: PharStreamWrapperInterceptor.php:28
‪TYPO3\CMS\Core\Cache\Frontend\PhpFrontend
Definition: PhpFrontend.php:25
‪TYPO3\CMS\Core\Cache\Exception\InvalidBackendException
Definition: InvalidBackendException.php:23
‪TYPO3\CMS\Core\Core\Bootstrap\initializeBackendAuthentication
‪static initializeBackendAuthentication($proceedIfNoUserIsLoggedIn=false)
Definition: Bootstrap.php:588
‪TYPO3\CMS\Core\Core\ClassLoadingInformation\isClassLoadingInformationAvailable
‪static bool isClassLoadingInformationAvailable()
Definition: ClassLoadingInformation.php:82
‪TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend
Definition: Typo3DatabaseBackend.php:30
‪TYPO3\CMS\Core\Core\Bootstrap\createCache
‪static FrontendInterface createCache(string $identifier, bool $disableCaching=false)
Definition: Bootstrap.php:330
‪TYPO3\CMS\Core\Core\Bootstrap\checkEncryptionKey
‪static checkEncryptionKey()
Definition: Bootstrap.php:513
‪TYPO3\CMS\Core\Core\Bootstrap\setMemoryLimit
‪static setMemoryLimit()
Definition: Bootstrap.php:468
‪TYPO3\CMS\Core\Core\Bootstrap\init
‪static ContainerInterface init(ClassLoader $classLoader, bool $failsafe=false)
Definition: Bootstrap.php:79
‪TYPO3\CMS\Core\Core\Bootstrap\initializeClassLoader
‪static initializeClassLoader(ClassLoader $classLoader)
Definition: Bootstrap.php:211
‪TYPO3\CMS\Core\Core\Environment\getContext
‪static ApplicationContext getContext()
Definition: Environment.php:141
‪TYPO3\CMS\Core\Core\Bootstrap\loadBaseTca
‪static loadBaseTca(bool $allowCaching=true, FrontendInterface $coreCache=null)
Definition: Bootstrap.php:502
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility
Definition: ExtensionManagementUtility.php:43
‪TYPO3\CMS\Core\Cache\Backend\BackendInterface
Definition: BackendInterface.php:25
‪TYPO3\CMS\Core\Core\Bootstrap\setDefaultTimezone
‪static setDefaultTimezone()
Definition: Bootstrap.php:369
‪TYPO3\CMS\Core\Core\Bootstrap\initializeLanguageObject
‪static initializeLanguageObject()
Definition: Bootstrap.php:598
‪TYPO3\CMS\Core\Core\Bootstrap\initializeBackendUser
‪static initializeBackendUser($className=BackendUserAuthentication::class, ServerRequestInterface $request=null)
Definition: Bootstrap.php:572
‪TYPO3\CMS\Core\Package\Cache\PackageCacheInterface
Definition: PackageCacheInterface.php:31
‪TYPO3\CMS\Core\Core\Bootstrap\createPackageManager
‪static PackageManager createPackageManager($packageManagerClassName, PackageCacheInterface $packageCache)
Definition: Bootstrap.php:249
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\setPackageManager
‪static setPackageManager(PackageManager $packageManager)
Definition: ExtensionManagementUtility.php:66
‪TYPO3\CMS\Core\Core\Bootstrap\initializeErrorHandling
‪static initializeErrorHandling()
Definition: Bootstrap.php:390
‪TYPO3\CMS\Core\Cache\Frontend\VariableFrontend
Definition: VariableFrontend.php:25
‪TYPO3\CMS\Core\Core\RequestId
Definition: RequestId.php:26
‪TYPO3\CMS\Core\Cache\Backend\NullBackend
Definition: NullBackend.php:22
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:36
‪TYPO3\CMS\Core\Service\DependencyOrderingService
Definition: DependencyOrderingService.php:32
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Core\Cache\Exception\InvalidCacheException
Definition: InvalidCacheException.php:23
‪TYPO3\CMS\Core\Core\Event\BootCompletedEvent
Definition: BootCompletedEvent.php:24
‪TYPO3\CMS\Core\Core\Bootstrap\runExtTablesPostProcessingHooks
‪static runExtTablesPostProcessingHooks()
Definition: Bootstrap.php:547
‪TYPO3\CMS\Core\Cache\Frontend\FrontendInterface
Definition: FrontendInterface.php:22
‪TYPO3\CMS\Core\Core\Environment\isComposerMode
‪static bool isComposerMode()
Definition: Environment.php:152
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Log\LogManager
Definition: LogManager.php:33
‪TYPO3\CMS\Core\Core
Definition: ApplicationContext.php:16
‪TYPO3\CMS\Core\Core\Bootstrap
Definition: Bootstrap.php:70
‪TYPO3\CMS\Core\Core\Bootstrap\checkIfEssentialConfigurationExists
‪static bool checkIfEssentialConfigurationExists(ConfigurationManager $configurationManager)
Definition: Bootstrap.php:234
‪TYPO3\CMS\Core\Core\Bootstrap\populateLocalConfiguration
‪static populateLocalConfiguration(ConfigurationManager $configurationManager)
Definition: Bootstrap.php:313
‪TYPO3\CMS\Core\Core\ClassLoadingInformation\registerClassLoadingInformation
‪static registerClassLoadingInformation()
Definition: ClassLoadingInformation.php:133
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\loadBaseTca
‪static loadBaseTca($allowCaching=true, FrontendInterface $codeCache=null)
Definition: ExtensionManagementUtility.php:1605
‪TYPO3\CMS\Core\Database\TableConfigurationPostProcessingHookInterface
Definition: TableConfigurationPostProcessingHookInterface.php:23
‪TYPO3\CMS\Core\Core\Bootstrap\createConfigurationManager
‪static ConfigurationManager createConfigurationManager()
Definition: Bootstrap.php:301
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\setEventDispatcher
‪static setEventDispatcher(EventDispatcherInterface $eventDispatcher)
Definition: ExtensionManagementUtility.php:81
‪TYPO3\CMS\Core\Core\Bootstrap\loadExtTables
‪static loadExtTables(bool $allowCaching=true, FrontendInterface $coreCache=null)
Definition: Bootstrap.php:532
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\loadExtLocalconf
‪static loadExtLocalconf($allowCaching=true, FrontendInterface $codeCache=null)
Definition: ExtensionManagementUtility.php:1514
‪TYPO3\CMS\Core\Core\Bootstrap\startOutputBuffering
‪static startOutputBuffering()
Definition: Bootstrap.php:181
‪TYPO3\CMS\Core\Core\Environment\getLegacyConfigPath
‪static string getLegacyConfigPath()
Definition: Environment.php:308
‪TYPO3\CMS\Core\Core\ClassLoadingInformation\setClassLoader
‪static setClassLoader(ClassLoader $classLoader)
Definition: ClassLoadingInformation.php:71