‪TYPO3CMS  9.5
SystemEnvironmentBuilder.php
Go to the documentation of this file.
1 <?php
2 namespace ‪TYPO3\CMS\Core\Core;
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
20 
41 {
43  const ‪REQUESTTYPE_FE = 1;
45  const ‪REQUESTTYPE_BE = 2;
47  const ‪REQUESTTYPE_CLI = 4;
52 
60  protected static ‪$supportedCgiServerApis = [
61  'fpm-fcgi',
62  'cgi',
63  'isapi',
64  'cgi-fcgi',
65  'srv', // HHVM with fastcgi
66  ];
67 
73  protected static ‪$disabledFunctions;
74 
83  public static function ‪run(int $entryPointLevel = 0, int $requestType = self::REQUESTTYPE_FE)
84  {
87  ‪self::setRequestType($requestType | ($requestType === self::REQUESTTYPE_BE && strpos($_REQUEST['route'] ?? '', '/ajax/') === 0 ? TYPO3_REQUESTTYPE_AJAX : 0));
88  ‪self::defineLegacyConstants($requestType === self::REQUESTTYPE_FE ? 'FE' : 'BE');
89  ‪self::definePaths($entryPointLevel, $requestType);
94 
95  $applicationContext = static::createApplicationContext();
96  ‪self::initializeEnvironment($applicationContext, $requestType);
97  GeneralUtility::presetApplicationContext($applicationContext);
98  }
99 
108  protected static function ‪createApplicationContext(): ‪ApplicationContext
109  {
110  $applicationContext = getenv('TYPO3_CONTEXT') ?: (getenv('REDIRECT_TYPO3_CONTEXT') ?: (getenv('HTTP_TYPO3_CONTEXT') ?: 'Production'));
111 
112  return new ‪ApplicationContext($applicationContext);
113  }
114 
118  protected static function ‪defineBaseConstants()
119  {
120  // Check one of the constants and return early if defined already
121  if (defined('TYPO3_version')) {
122  return;
123  }
124 
125  // This version, branch and copyright
126  define('TYPO3_version', '9.5.32-dev');
127  define('TYPO3_branch', '9.5');
128  define('TYPO3_copyright_year', '1998-' . date('Y'));
129 
130  // TYPO3 external links
131  define('TYPO3_URL_GENERAL', 'https://typo3.org/');
132  define('TYPO3_URL_LICENSE', 'https://typo3.org/project/licenses/');
133  define('TYPO3_URL_EXCEPTION', 'https://typo3.org/go/exception/CMS/');
134  define('TYPO3_URL_DONATE', 'https://typo3.org/community/contribute/donate/');
135  define('TYPO3_URL_WIKI_OPCODECACHE', 'https://docs.typo3.org/m/typo3/guide-installation/master/en-us/Troubleshooting/Index.html#opcode-cache-messages');
136 
137  // @deprecated since TYPO3 v9.4 and will be removed in TYPO3 v10.0
138  define('TYPO3_URL_MAILINGLISTS', 'http://lists.typo3.org/cgi-bin/mailman/listinfo');
139  define('TYPO3_URL_DOCUMENTATION', 'https://typo3.org/documentation/');
140  define('TYPO3_URL_DOCUMENTATION_TSREF', 'https://docs.typo3.org/typo3cms/TyposcriptReference/');
141  define('TYPO3_URL_DOCUMENTATION_TSCONFIG', 'https://docs.typo3.org/typo3cms/TSconfigReference/');
142  define('TYPO3_URL_CONSULTANCY', 'https://typo3.org/support/professional-services/');
143  define('TYPO3_URL_CONTRIBUTE', 'https://typo3.org/contribute/');
144  define('TYPO3_URL_SECURITY', 'https://typo3.org/teams/security/');
145  define('TYPO3_URL_DOWNLOAD', 'https://typo3.org/download/');
146  define('TYPO3_URL_SYSTEMREQUIREMENTS', 'https://typo3.org/typo3-cms/overview/requirements/');
147 
148  // A linefeed, a carriage return, a CR-LF combination
149  defined('LF') ?: define('LF', chr(10));
150  defined('CR') ?: define('CR', chr(13));
151  defined('CRLF') ?: define('CRLF', CR . LF);
152 
153  // @deprecated since TYPO3 v9.4 and will be removed in TYPO3 v10.0
154  defined('NUL') ?: define('NUL', "\0");
155  defined('TAB') ?: define('TAB', "\t");
156  defined('SUB') ?: define('SUB', chr(26));
157 
158  // Security related constant: Default value of fileDenyPattern
159  define('FILE_DENY_PATTERN_DEFAULT', '\\.(php[3-8]?|phpsh|phtml|pht|phar|shtml|cgi)(\\..*)?$|\\.pl$|^\\.htaccess$');
160  // Security related constant: List of file extensions that should be registered as php script file extensions
161  define('PHP_EXTENSIONS_DEFAULT', 'php,php3,php4,php5,php6,php7,php8,phpsh,inc,phtml,pht,phar');
162 
163  // Operating system identifier
164  // Either "WIN" or empty string
165  defined('TYPO3_OS') ?: define('TYPO3_OS', self::getTypo3Os());
166 
167  // Service error constants
168  // @deprecated since TYPO3 v9.3, will be removed in TYPO3 v10.0, use the class constants in AbstractService instead.
169  // General error - something went wrong
170  define('T3_ERR_SV_GENERAL', -1);
171  // During execution it showed that the service is not available and should be ignored. The service itself should call $this->setNonAvailable()
172  define('T3_ERR_SV_NOT_AVAIL', -2);
173  // Passed subtype is not possible with this service
174  define('T3_ERR_SV_WRONG_SUBTYPE', -3);
175  // Passed subtype is not possible with this service
176  define('T3_ERR_SV_NO_INPUT', -4);
177  // File not found which the service should process
178  define('T3_ERR_SV_FILE_NOT_FOUND', -20);
179  // File not readable
180  define('T3_ERR_SV_FILE_READ', -21);
181  // File not writable
182  define('T3_ERR_SV_FILE_WRITE', -22);
183  // Passed subtype is not possible with this service
184  define('T3_ERR_SV_PROG_NOT_FOUND', -40);
185  // Passed subtype is not possible with this service
186  define('T3_ERR_SV_PROG_FAILED', -41);
187  }
188 
195  protected static function ‪definePaths(int $entryPointLevel, int $requestType)
196  {
197  $isCli = ‪self::isCliRequestType($requestType);
198  // Absolute path of the entry script that was called
199  $scriptPath = GeneralUtility::fixWindowsFilePath(self::getPathThisScript($isCli));
200  $rootPath = ‪self::getRootPathFromScriptPath($scriptPath, $entryPointLevel);
201  // Check if the root path has been set in the environment (e.g. by the composer installer)
202  if (getenv('TYPO3_PATH_ROOT')) {
203  if ($isCli && self::usesComposerClassLoading() && ‪StringUtility::endsWith($scriptPath, 'typo3')) {
204  // PATH_thisScript is used for various path calculations based on the document root
205  // Therefore we assume it is always a subdirectory of the document root, which is not the case
206  // in composer mode on cli, as the binary is in the composer bin directory.
207  // Because of that, we enforce the document root path of this binary to be set
208  $scriptName = '/typo3/sysext/core/bin/typo3';
209  } else {
210  // Base the script path on the path taken from the environment
211  // to make relative path calculations work in case only one of both is symlinked
212  // or has the real path
213  $scriptName = substr($scriptPath, strlen($rootPath));
214  }
215  $rootPath = GeneralUtility::fixWindowsFilePath(getenv('TYPO3_PATH_ROOT'));
216  $scriptPath = $rootPath . $scriptName;
217  }
218 
219  if (!defined('PATH_thisScript')) {
220  // @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0
221  define('PATH_thisScript', $scriptPath);
222  }
223  // Absolute path of the document root of the instance with trailing slash
224  if (!defined('PATH_site')) {
225  // @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0
226  define('PATH_site', $rootPath . '/');
227  }
228  // Relative path from document root to typo3/ directory
229  // Hardcoded to "typo3/"
230  if (!defined('TYPO3_mainDir')) {
231  define('TYPO3_mainDir', 'typo3/');
232  }
233  // Absolute path of the typo3 directory of the instance with trailing slash
234  // Example "/var/www/instance-name/htdocs/typo3/"
235  if (!defined('PATH_typo3')) {
236  // @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0
237  define('PATH_typo3', PATH_site . TYPO3_mainDir);
238  }
239  // Absolute path to the typo3conf directory with trailing slash
240  // Example "/var/www/instance-name/htdocs/typo3conf/"
241  if (!defined('PATH_typo3conf')) {
242  // @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0
243  define('PATH_typo3conf', PATH_site . 'typo3conf/');
244  }
245  }
246 
250  protected static function ‪checkMainPathsExist()
251  {
252  if (!is_file(PATH_thisScript)) {
253  static::exitWithMessage('Unable to determine path to entry script.');
254  }
255  }
256 
260  protected static function ‪initializeGlobalVariables()
261  {
262  // Unset variable(s) in global scope (security issue #13959)
263  ‪$GLOBALS['TYPO3_MISC'] = [];
264  ‪$GLOBALS['T3_VAR'] = [];
265  ‪$GLOBALS['T3_SERVICES'] = [];
266  }
267 
272  protected static function ‪initializeGlobalTimeTrackingVariables()
273  {
274  // Microtime of (nearly) script start
275  ‪$GLOBALS['TYPO3_MISC']['microtime_start'] = microtime(true);
276  // EXEC_TIME is set so that the rest of the script has a common value for the script execution time
277  ‪$GLOBALS['EXEC_TIME'] = time();
278  // $ACCESS_TIME is a common time in minutes for access control
279  ‪$GLOBALS['ACCESS_TIME'] = ‪$GLOBALS['EXEC_TIME'] - ‪$GLOBALS['EXEC_TIME'] % 60;
280  // $SIM_EXEC_TIME is set to $EXEC_TIME but can be altered later in the script if we want to
281  // simulate another execution-time when selecting from eg. a database
282  ‪$GLOBALS['SIM_EXEC_TIME'] = ‪$GLOBALS['EXEC_TIME'];
283  // If $SIM_EXEC_TIME is changed this value must be set accordingly
284  ‪$GLOBALS['SIM_ACCESS_TIME'] = ‪$GLOBALS['ACCESS_TIME'];
285  }
286 
293  public static function ‪initializeEnvironment(ApplicationContext $context, int $requestType = null)
294  {
295  // Absolute path of the entry script that was called
296  $scriptPath = PATH_thisScript;
297  $sitePath = rtrim(PATH_site, '/');
298 
299  if (getenv('TYPO3_PATH_ROOT')) {
300  $rootPathFromEnvironment = GeneralUtility::fixWindowsFilePath(getenv('TYPO3_PATH_ROOT'));
301  if ($sitePath !== $rootPathFromEnvironment) {
302  // This means, that we re-initialized the environment during a single request
303  // This currently only happens in custom code or during functional testing
304  // Once the constants are removed, we might be able to remove this code here as well and directly pass an environment to the application
305  $scriptPath = $rootPathFromEnvironment . substr($scriptPath, strlen($sitePath));
306  $sitePath = $rootPathFromEnvironment;
307  }
308  }
309 
310  $projectRootPath = GeneralUtility::fixWindowsFilePath(getenv('TYPO3_PATH_APP'));
311  $isDifferentRootPath = ($projectRootPath && $projectRootPath !== $sitePath);
313  $context,
314  self::isCliRequestType($requestType),
315  self::usesComposerClassLoading(),
316  $isDifferentRootPath ? $projectRootPath : $sitePath,
317  $sitePath,
318  $isDifferentRootPath ? $projectRootPath . '/var' : $sitePath . '/typo3temp/var',
319  $isDifferentRootPath ? $projectRootPath . '/config' : $sitePath . '/typo3conf',
320  $scriptPath,
321  self::getTypo3Os() === 'WIN' ? 'WINDOWS' : 'UNIX'
322  );
323  }
324 
333  protected static function ‪initializeBasicErrorReporting()
334  {
335  // Core should be notice free at least until this point ...
336  error_reporting(E_ALL & ~(E_STRICT | E_NOTICE | E_DEPRECATED));
337  }
338 
344  protected static function ‪getTypo3Os()
345  {
346  $typoOs = '';
347  if (!stristr(PHP_OS, 'darwin') && !stristr(PHP_OS, 'cygwin') && stristr(PHP_OS, 'win')) {
348  $typoOs = 'WIN';
349  }
350  return $typoOs;
351  }
352 
368  protected static function ‪getPathThisScript(bool $isCli)
369  {
370  if ($isCli) {
372  }
374  }
375 
383  protected static function ‪getPathThisScriptNonCli()
384  {
385  $cgiPath = '';
386  if (isset($_SERVER['ORIG_PATH_TRANSLATED'])) {
387  $cgiPath = $_SERVER['ORIG_PATH_TRANSLATED'];
388  } elseif (isset($_SERVER['PATH_TRANSLATED'])) {
389  $cgiPath = $_SERVER['PATH_TRANSLATED'];
390  }
391  if ($cgiPath && in_array(PHP_SAPI, self::$supportedCgiServerApis, true)) {
392  $scriptPath = $cgiPath;
393  } else {
394  if (isset($_SERVER['ORIG_SCRIPT_FILENAME'])) {
395  $scriptPath = $_SERVER['ORIG_SCRIPT_FILENAME'];
396  } else {
397  $scriptPath = $_SERVER['SCRIPT_FILENAME'];
398  }
399  }
400  return $scriptPath;
401  }
402 
411  protected static function ‪getPathThisScriptCli()
412  {
413  // Possible relative path of the called script
414  if (isset($_SERVER['argv'][0])) {
415  $scriptPath = $_SERVER['argv'][0];
416  } elseif (isset($_ENV['_'])) {
417  $scriptPath = $_ENV['_'];
418  } else {
419  $scriptPath = $_SERVER['_'];
420  }
421  // Find out if path is relative or not
422  $isRelativePath = false;
423  if (self::getTypo3Os() === 'WIN') {
424  if (!preg_match('/^([a-zA-Z]:)?\\\\/', $scriptPath)) {
425  $isRelativePath = true;
426  }
427  } else {
428  if ($scriptPath[0] !== '/') {
429  $isRelativePath = true;
430  }
431  }
432  // Concatenate path to current working directory with relative path and remove "/./" constructs
433  if ($isRelativePath) {
434  if (isset($_SERVER['PWD'])) {
435  $workingDirectory = $_SERVER['PWD'];
436  } else {
437  $workingDirectory = getcwd();
438  }
439  $scriptPath = $workingDirectory . '/' . preg_replace('/\\.\\//', '', $scriptPath);
440  }
441  return $scriptPath;
442  }
443 
459  protected static function ‪getRootPathFromScriptPath($scriptPath, $entryPointLevel)
460  {
461  $entryScriptDirectory = ‪PathUtility::dirnameDuringBootstrap($scriptPath);
462  if ($entryPointLevel > 0) {
463  list($rootPath) = GeneralUtility::revExplode('/', $entryScriptDirectory, $entryPointLevel + 1);
464  } else {
465  $rootPath = $entryScriptDirectory;
466  }
467  return $rootPath;
468  }
469 
475  protected static function ‪exitWithMessage($message)
476  {
477  $headers = [
479  'Content-Type: text/plain'
480  ];
481  if (!headers_sent()) {
482  foreach ($headers as $header) {
483  header($header);
484  }
485  }
486  echo $message . LF;
487  exit(1);
488  }
489 
496  public static function ‪isFunctionDisabled($function)
497  {
498  if (static::$disabledFunctions === null) {
499  static::$disabledFunctions = GeneralUtility::trimExplode(',', ini_get('disable_functions'));
500  }
501  if (!empty(static::$disabledFunctions)) {
502  return in_array($function, static::$disabledFunctions, true);
503  }
504 
505  return false;
506  }
507 
511  protected static function ‪usesComposerClassLoading(): bool
512  {
513  return defined('TYPO3_COMPOSER_MODE') && TYPO3_COMPOSER_MODE;
514  }
515 
520  protected static function ‪defineTypo3RequestTypes()
521  {
522  if (defined('TYPO3_REQUESTTYPE_FE')) { // @todo remove once Bootstrap::getInstance() is dropped
523  return;
524  }
525  define('TYPO3_REQUESTTYPE_FE', self::REQUESTTYPE_FE);
526  define('TYPO3_REQUESTTYPE_BE', self::REQUESTTYPE_BE);
527  define('TYPO3_REQUESTTYPE_CLI', self::REQUESTTYPE_CLI);
528  define('TYPO3_REQUESTTYPE_AJAX', self::REQUESTTYPE_AJAX);
529  define('TYPO3_REQUESTTYPE_INSTALL', self::REQUESTTYPE_INSTALL);
530  }
531 
537  protected static function ‪setRequestType(int $requestType)
538  {
539  if (defined('TYPO3_REQUESTTYPE')) { // @todo remove once Bootstrap::getInstance() is dropped
540  return;
541  }
542  define('TYPO3_REQUESTTYPE', $requestType);
543  }
544 
550  protected static function ‪defineLegacyConstants(string $mode)
551  {
552  if (defined('TYPO3_MODE')) { // @todo remove once Bootstrap::getInstance() is dropped
553  return;
554  }
555  define('TYPO3_MODE', $mode);
556  }
557 
565  protected static function ‪isCliRequestType(?int $requestType): bool
566  {
567  if ($requestType === null) {
568  $requestType = PHP_SAPI === 'cli' ? ‪self::REQUESTTYPE_CLI : ‪self::REQUESTTYPE_FE;
569  }
570 
571  return ($requestType & self::REQUESTTYPE_CLI) === ‪self::REQUESTTYPE_CLI;
572  }
573 }
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\initializeEnvironment
‪static initializeEnvironment(ApplicationContext $context, int $requestType=null)
Definition: SystemEnvironmentBuilder.php:291
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\$disabledFunctions
‪static string[] $disabledFunctions
Definition: SystemEnvironmentBuilder.php:71
‪TYPO3\CMS\Core\Utility\PathUtility
Definition: PathUtility.php:23
‪TYPO3\CMS\Core\Utility\StringUtility\endsWith
‪static bool endsWith($haystack, $needle)
Definition: StringUtility.php:60
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\isCliRequestType
‪static bool isCliRequestType(?int $requestType)
Definition: SystemEnvironmentBuilder.php:563
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\usesComposerClassLoading
‪static bool usesComposerClassLoading()
Definition: SystemEnvironmentBuilder.php:509
‪TYPO3\CMS\Core\Core\ApplicationContext
Definition: ApplicationContext.php:36
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\checkMainPathsExist
‪static checkMainPathsExist()
Definition: SystemEnvironmentBuilder.php:248
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\getRootPathFromScriptPath
‪static string getRootPathFromScriptPath($scriptPath, $entryPointLevel)
Definition: SystemEnvironmentBuilder.php:457
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\initializeGlobalTimeTrackingVariables
‪static initializeGlobalTimeTrackingVariables()
Definition: SystemEnvironmentBuilder.php:270
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder
Definition: SystemEnvironmentBuilder.php:41
‪TYPO3\CMS\Core\Utility\PathUtility\dirnameDuringBootstrap
‪static string dirnameDuringBootstrap($path)
Definition: PathUtility.php:275
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_BE
‪const REQUESTTYPE_BE
Definition: SystemEnvironmentBuilder.php:45
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\defineTypo3RequestTypes
‪static defineTypo3RequestTypes()
Definition: SystemEnvironmentBuilder.php:518
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\isFunctionDisabled
‪static bool isFunctionDisabled($function)
Definition: SystemEnvironmentBuilder.php:494
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\createApplicationContext
‪static ApplicationContext createApplicationContext()
Definition: SystemEnvironmentBuilder.php:106
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\setRequestType
‪static setRequestType(int $requestType)
Definition: SystemEnvironmentBuilder.php:535
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\exitWithMessage
‪static exitWithMessage($message)
Definition: SystemEnvironmentBuilder.php:473
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\getPathThisScriptNonCli
‪static string getPathThisScriptNonCli()
Definition: SystemEnvironmentBuilder.php:381
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\defineBaseConstants
‪static defineBaseConstants()
Definition: SystemEnvironmentBuilder.php:116
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_CLI
‪const REQUESTTYPE_CLI
Definition: SystemEnvironmentBuilder.php:47
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\initializeGlobalVariables
‪static initializeGlobalVariables()
Definition: SystemEnvironmentBuilder.php:258
‪TYPO3\CMS\Core\Core\Environment\initialize
‪static initialize(ApplicationContext $context, bool $cli, bool $composerMode, string $projectPath, string $publicPath, string $varPath, string $configPath, string $currentScript, string $os)
Definition: Environment.php:77
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\run
‪static run(int $entryPointLevel=0, int $requestType=self::REQUESTTYPE_FE)
Definition: SystemEnvironmentBuilder.php:81
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\$supportedCgiServerApis
‪static array $supportedCgiServerApis
Definition: SystemEnvironmentBuilder.php:59
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\definePaths
‪static definePaths(int $entryPointLevel, int $requestType)
Definition: SystemEnvironmentBuilder.php:193
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\getPathThisScriptCli
‪static string getPathThisScriptCli()
Definition: SystemEnvironmentBuilder.php:409
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\getPathThisScript
‪static string getPathThisScript(bool $isCli)
Definition: SystemEnvironmentBuilder.php:366
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\initializeBasicErrorReporting
‪static initializeBasicErrorReporting()
Definition: SystemEnvironmentBuilder.php:331
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_AJAX
‪const REQUESTTYPE_AJAX
Definition: SystemEnvironmentBuilder.php:49
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\Core
Definition: ApplicationContext.php:2
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\getTypo3Os
‪static string getTypo3Os()
Definition: SystemEnvironmentBuilder.php:342
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:21
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_FE
‪const REQUESTTYPE_FE
Definition: SystemEnvironmentBuilder.php:43
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\defineLegacyConstants
‪static defineLegacyConstants(string $mode)
Definition: SystemEnvironmentBuilder.php:548
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_INSTALL
‪const REQUESTTYPE_INSTALL
Definition: SystemEnvironmentBuilder.php:51
‪TYPO3\CMS\Core\Utility\HttpUtility\HTTP_STATUS_500
‪const HTTP_STATUS_500
Definition: HttpUtility.php:79