SystemEnvironmentBuilder
Class to encapsulate base setup of bootstrap.
This class contains all code that must be executed by every entry script.
It sets up all basic paths, constants, global variables and checks the basic environment TYPO3 runs in.
This class does not use any TYPO3 instance specific configuration, it only sets up things based on the server environment and core code. Even with a missing typo3conf/LocalConfiguration.php this script will be successful.
The script aborts execution with an error message if some part fails or conditions are not met.
This script is internal code and subject to change. DO NOT use it in own code, or be prepared your code might break in future versions of the core.
Table of Contents
Constants
- REQUESTTYPE_AJAX = 8
- REQUESTTYPE_BE = 2
- REQUESTTYPE_CLI = 4
- REQUESTTYPE_FE = 1
- REQUESTTYPE_INSTALL = 16
Methods
- run() : mixed
- Run base setup.
- calculateRootPath() : string
- Absolute path to the "classic" site root of the TYPO3 application.
- calculateScriptPath() : string
- Calculate script path. This is the absolute path to the entry script.
- createApplicationContext() : ApplicationContext
- Some notes:
- defineBaseConstants() : mixed
- Define all simple constants that have no dependency to local configuration
- defineLegacyConstants() : mixed
- Define constants and variables
- defineTypo3RequestTypes() : mixed
- Define TYPO3_REQUESTTYPE* constants that can be used for developers to see if any context has been hit also see setRequestType(). Is done at the very beginning so these parameters are always available.
- getPathThisScript() : string
- Calculate script path.
- getPathThisScriptCli() : string
- Calculate path to entry script if in cli mode.
- getPathThisScriptNonCli() : string
- Return path to entry script if not in cli mode.
- getRootPathFromScriptPath() : string
- Calculate the document root part to the instance from $scriptPath.
- initializeEnvironment() : mixed
- Initialize the Environment class
- initializeGlobalTimeTrackingVariables() : mixed
- Initialize global time tracking variables.
- initializeGlobalVariables() : mixed
- Set up / initialize several globals variables
- isCliRequestType() : bool
- Checks if request type is cli.
- isRunningOnWindows() : bool
- Determine if the operating system TYPO3 is running on is windows.
- setRequestType() : mixed
- Defines the TYPO3_REQUESTTYPE constant so the environment knows which context the request is running.
- usesComposerClassLoading() : bool
Constants
REQUESTTYPE_AJAX
public
mixed
REQUESTTYPE_AJAX
= 8
REQUESTTYPE_BE
public
mixed
REQUESTTYPE_BE
= 2
REQUESTTYPE_CLI
public
mixed
REQUESTTYPE_CLI
= 4
REQUESTTYPE_FE
public
mixed
REQUESTTYPE_FE
= 1
REQUESTTYPE_INSTALL
public
mixed
REQUESTTYPE_INSTALL
= 16
Methods
run()
Run base setup.
public
static run([int $entryPointLevel = 0 ][, int $requestType = self::REQUESTTYPE_FE ]) : mixed
This entry method is used in all scopes (FE, BE, Install Tool and CLI)
Parameters
- $entryPointLevel : int = 0
-
Number of subdirectories where the entry script is located under the document root
- $requestType : int = self::REQUESTTYPE_FE
This method should not be used by 3rd party code. It will change without further notice.
calculateRootPath()
Absolute path to the "classic" site root of the TYPO3 application.
protected
static calculateRootPath(int $entryPointLevel, int $requestType) : string
This semantically refers to the directory where executable server-side code, configuration and runtime files are located (e.g. typo3conf/ext, typo3/sysext, typo3temp/var). In practice this is always identical to the public web document root path which contains files that are served by the webserver directly (fileadmin/ and public resources).
This is not to be confused with the app-path that is used in composer-mode installations (by default). Resources in app-path are located outside the document root.
Parameters
- $entryPointLevel : int
-
Number of subdirectories where the entry script is located under the document root
- $requestType : int
Return values
string —Absolute path without trailing slash
calculateScriptPath()
Calculate script path. This is the absolute path to the entry script.
protected
static calculateScriptPath(int $entryPointLevel, int $requestType) : string
Can be something like '.../public/index.php' or '.../public/typo3/index.php' for web calls, or '.../bin/typo3' or similar for cli calls.
Parameters
- $entryPointLevel : int
-
Number of subdirectories where the entry script is located under the document root
- $requestType : int
Return values
string —Absolute path to entry script
createApplicationContext()
Some notes:
protected
static createApplicationContext() : ApplicationContext
HTTP_TYPO3_CONTEXT -> used with Apache suexec support REDIRECT_TYPO3_CONTEXT -> used under some circumstances when value is set in the webserver and proxying the values to FPM
Tags
Return values
ApplicationContextdefineBaseConstants()
Define all simple constants that have no dependency to local configuration
protected
static defineBaseConstants() : mixed
defineLegacyConstants()
Define constants and variables
protected
static defineLegacyConstants(string $mode) : mixed
since v11, method can be removed in v12
Parameters
- $mode : string
defineTypo3RequestTypes()
Define TYPO3_REQUESTTYPE* constants that can be used for developers to see if any context has been hit also see setRequestType(). Is done at the very beginning so these parameters are always available.
protected
static defineTypo3RequestTypes() : mixed
since v11, method can be removed in v12
getPathThisScript()
Calculate script path.
protected
static getPathThisScript(bool $isCli) : string
First step in path calculation: Goal is to find the absolute path of the entry script that was called without resolving any links. This is important since the TYPO3 entry points are often linked to a central core location, so we can not use the php magic FILE here, but resolve the called script path from given server environments.
This path is important to calculate the document root. The strategy is to find out the script name that was called in the first place and to subtract the local part from it to find the document root.
Parameters
- $isCli : bool
Return values
string —Absolute path to entry script
getPathThisScriptCli()
Calculate path to entry script if in cli mode.
protected
static getPathThisScriptCli() : string
First argument of a cli script is the path to the script that was called. If the script does not start with / (or A:\ for Windows), the path is not absolute yet, and the current working directory is added.
Return values
string —Absolute path to entry script
getPathThisScriptNonCli()
Return path to entry script if not in cli mode.
protected
static getPathThisScriptNonCli() : string
Return values
string —Absolute path to entry script
getRootPathFromScriptPath()
Calculate the document root part to the instance from $scriptPath.
protected
static getRootPathFromScriptPath(string $scriptPath, int $entryPointLevel) : string
This is based on the amount of subdirectories "under" root path where $scriptPath is located.
The following main scenarios for entry points exist by default in the TYPO3 core:
- Directly called documentRoot/index.php (-> FE call or eiD include): index.php is located in the same directory as the main project. The document root is identical to the directory the script is located at.
- The install tool, located under typo3/install.php.
- A Backend script: This is the case for the typo3/index.php dispatcher and other entry scripts like 'typo3/sysext/core/bin/typo3' or 'typo3/index.php' that are located inside typo3/ directly.
Parameters
- $scriptPath : string
-
Calculated path to the entry script
- $entryPointLevel : int
-
Number of subdirectories where the entry script is located under the document root
Return values
string —Absolute path to document root of installation without trailing slash
initializeEnvironment()
Initialize the Environment class
protected
static initializeEnvironment(int $requestType, string $scriptPath, string $sitePath) : mixed
Parameters
- $requestType : int
- $scriptPath : string
- $sitePath : string
initializeGlobalTimeTrackingVariables()
Initialize global time tracking variables.
protected
static initializeGlobalTimeTrackingVariables() : mixed
These are helpers to for example output script parsetime at the end of a script.
initializeGlobalVariables()
Set up / initialize several globals variables
protected
static initializeGlobalVariables() : mixed
isCliRequestType()
Checks if request type is cli.
protected
static isCliRequestType(int|null $requestType) : bool
Falls back to check PHP_SAPI in case request type is not provided
Parameters
- $requestType : int|null
Return values
boolisRunningOnWindows()
Determine if the operating system TYPO3 is running on is windows.
protected
static isRunningOnWindows() : bool
Return values
boolsetRequestType()
Defines the TYPO3_REQUESTTYPE constant so the environment knows which context the request is running.
protected
static setRequestType(int $requestType) : mixed
since v11, method can be removed in v12
Parameters
- $requestType : int
usesComposerClassLoading()
protected
static usesComposerClassLoading() : bool