Bootstrap Variables

These variables can be set via your environment or as PHP constants in your entry scripts. Read more about how to use bootstrap variables on the configuration page.

Configuring Craft
Learn about all the ways to customize Craft.


The path to the base directory that Craft will look for config/, templates/, and other directories within by default. (It is assumed to be the parent of the vendor/ folder by default.)

// Tell Craft to look for config/, templates/, etc., two levels up from here
define('CRAFT_BASE_PATH', dirname(__DIR__, 2));


The path to the composer.json file. (It is assumed to live within the base directory by default.)

define('CRAFT_COMPOSER_PATH', 'path/to/composer.json');


The path to the config/ folder. (It is assumed to live within the base directory by default.)


The path to the migrations/ folder used to store content migrations. (It is assumed to live within the base directory by default.)


Dictates whether the current request should be treated as a control panel request.

// Tell Craft that this is a control panel request
define('CRAFT_CP', true);

If this isn’t defined, Craft will treat the request as a control panel request if either of these are true:

  • The baseCpUrl setting is set, and the request URL begins with it (plus the cpTrigger setting, if set).
  • The baseCpUrl setting is not set, and the request URI begins with the cpTrigger setting.


Path to your project’s .env file, including the filename. Defaults to .env, within CRAFT_BASE_PATH.


The environment name that multi-environment configs can reference when defining their environment-specific config arrays.

Prior to Craft 4, craftcms/craft starter projects allowed this fall back to the default production value, for security. Now, the starter kit comes with three .env examples, each of which explicitly sets a CRAFT_ENVIRONMENT.


When set to true, Craft will skip file system permission checks and operations that are not available in an environment with ephemeral or read-only storage.


Your Craft license key, if for some reason that must be defined by PHP rather than a license key file. (Don’t set this until you have a valid license key.)

// Tell Craft to get its license key from a `LICENSE_KEY` environment variable
define('CRAFT_LICENSE_KEY', craft\helpers\App::env('LICENSE_KEY'));


The path that Craft should store its license key file, including its filename. (It will be stored as license.key within your config/ folder by default.)


Adjusts the default log target config to allow or disallow multi-line log statements.


Can be set to false to prevent Craft from setting PHP’s log_errors (opens new window) and error_log (opens new window) settings, leaving it up to whatever’s set in php.ini.

// Don’t send PHP error logs to storage/logs/phperrors.log
define('CRAFT_LOG_PHP_ERRORS', false);


The path to a secrets file, whose values are not loaded into the environment.

// Check the `secrets.php` file next to this script for sensitive values:
define('CRAFT_SITE', dirname(__DIR__) . 'secrets.php');


The Site handle or ID that Craft should be serving from this index.php file. (Only set this if you have a good reason to. Craft will automatically serve the correct site by inspecting the requested URL, unless this is set.)

// Show the German site
define('CRAFT_SITE', 'de');


The path to the storage/ folder. (It is assumed to live within the base directory by default.)

Make sure you set this to a valid folder path, otherwise it will be ignored.


When set to true, Craft will send log output to stderr and stdout, instead of to log files. PHP fatal errors will be sent to stderr.


The path to the templates/ folder. (It is assumed to live within the base directory by default.)


The path to the translations/ folder. (It is assumed to live within the base directory by default.)


The path to the vendor/ folder. (It is assumed to live 4 directories up from the bootstrap script by default.)


Automatically sets the @web alias. Platforms (like DDEV) can set this to ensure Craft is pre-configured with the correct public URL.


Automatically sets the @webroot alias, like CRAFT_WEB_URL.