Attention
TYPO3 v11 has reached end-of-life as of October 31th 2024 and is no longer being maintained. Use the version switcher on the top left of this page to select documentation for a supported version of TYPO3.
Need more time before upgrading? You can purchase Extended Long Term Support (ELTS) for TYPO3 v11 here: TYPO3 ELTS.
Examples
Debugging and development setup
Important
Do not use debug / development setup in production. This setup generates error messages in the Frontend and a number of log messages for low severity errors. The messages in the Frontend will be visible to the user, give a potential attacker more information about your system and the logging will fill your filesystem / DB, which degrades performance and can potentially be used to bring down your system by filling storage with log messages. See Use staging servers for developments and tests for more information.
Very verbose configuration which logs and displays all errors and exceptions.
In Local
or Additional
:
$changeSettings['SYS'] = [
'displayErrors' => 1,
'devIPmask' => '*',
'errorHandler' => 'TYPO3\\CMS\\Core\\Error\\ErrorHandler',
'errorHandlerErrors' => E_ALL ^ E_NOTICE,
'exceptionalErrors' => E_ALL ^ E_NOTICE ^ E_WARNING ^ E_USER_ERROR ^ E_USER_NOTICE ^ E_USER_WARNING,
'debugExceptionHandler' => 'TYPO3\\CMS\\Core\\Error\\DebugExceptionHandler',
'productionExceptionHandler' => 'TYPO3\\CMS\\Core\\Error\\DebugExceptionHandler',
];
$GLOBALS['TYPO3_CONF_VARS'] = array_replace_recursive($GLOBALS['TYPO3_CONF_VARS'], $changeSettings);
You can also use the "Debug" preset in the Settings module "Configuration presets".
In .htaccess
php_flag display_errors on
php_flag log_errors on
php_value error_log /path/to/php_error.log
config.contentObjectExceptionHandler = 0
Use this setting, to get more context and a stacktrace in the Frontend in case of an exception.
Important
Do not set config.
to 0 in production. It will
display a complete stack dump in the Frontend, when an exception occurs. Use
config.
, which is the default, in production.
See contentObjectExceptionHandler for more information.
Production setup
Example for a production configuration which displays only errors and
exceptions, if the devIPmask setting
matches. Errors and exceptions are only logged, if their
log level is at least
\Psr\
.
In Local
or Additional
:
$changeSettings['SYS'] = [
'displayErrors' => -1,
'devIPmask' => '[your.IP.address]',
'errorHandler' => 'TYPO3\\CMS\\Core\\Error\\ErrorHandler',
'belogErrorReporting' => '0',
];
$GLOBALS['TYPO3_CONF_VARS'] = array_replace_recursive($GLOBALS['TYPO3_CONF_VARS'], $changeSettings);
You can also use the "Live" preset in the Settings module "Configuration presets".
In .htaccess
:
php_flag display_errors off
php_flag log_errors on
php_value error_log /path/to/php_error.log
Performance setup
Since the error and exception handling and also the logging need some performance, here's an example how to disable error and exception handling completely.
In Local
or Additional
:
$changeSettings['SYS'] = [
'displayErrors' => 0,
'devIPmask' => '',
'errorHandler' => '',
'debugExceptionHandler' => '',
'productionExceptionHandler' => '',
'belogErrorReporting' => '0',
];
$GLOBALS['TYPO3_CONF_VARS'] = array_replace_recursive($GLOBALS['TYPO3_CONF_VARS'], $changeSettings);
In .htaccess
:
php_flag display_errors off
php_flag log_errors off