Feature: #84153 - Introduce a generic Environment class

See forge#84153

Description

A new base API class TYPO3\CMS\Core\Core\Environment has been added. This class contains application-wide information related to paths and PHP internals, which were previously exposed via PHP constants.

This Environment class comes with a new possibility, to have a config and var folder outside of the document root (known as PATH_site). When the environment variable TYPO3_PATH_APP is set, which defines the project root folder, the new config and var folders outside of the document root are used for installation-wide configuration and volatile files.

The following static API methods are exposed within the Environment class:

  • Environment::isCli() - defines whether TYPO3 runs on a CLI context or HTTP context

  • Environment::getApplicationContext() - returns the ApplicationContext object that encapsulates TYPO3_CONTEXT

  • Environment::isComposerMode() - defines whether TYPO3 was installed via composer

  • Environment::getProjectPath() - returns the absolute path to the root-level folder without the trailing slash

  • Environment::getPublicPath() - returns the absolute path to the publically accessible folder (previously known as PATH_site) without the trailing slash

  • Environment::getVarPath() - returns the absolute path to the folder where non-public semi-persistent files can be stored. For regular projects, this is known as PATH_site/typo3temp/var

  • Environment::getConfigPath() - returns the absolute path to the folder where (writeable) configuration is stored. For regular projects, this is known as PATH_site/typo3conf

  • Environment::getCurrentScript() - the absolute path and filename to the currently executed PHP script

  • Environment::isWindows() - whether TYPO3 runs on a windows server

  • Environment::isUnix() - whether TYPO3 runs on a unix server

Impact

You should not rely on the PHP constants anymore, but rather use the Environment class to resolve paths:

  • PATH_site

  • PATH_typo3conf

  • PATH_site . 'typo3temp/var/'

  • TYPO3_OS

  • TYPO3_REQUESTTYPE_CLI

  • PATH_thisScript