From dee22f4a281335b51333ff493b34c026f36e1804 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 11 Dec 2015 21:05:53 +0100 Subject: [ticket/14177] Uses Symfony's Debug ErrorHandler in development environment PHPBB3-14177 --- phpBB/phpbb/debug/debug.php | 70 +++++++++++++++++++++++++++++++++++++ phpBB/phpbb/debug/error_handler.php | 32 +++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 phpBB/phpbb/debug/debug.php create mode 100644 phpBB/phpbb/debug/error_handler.php (limited to 'phpBB/phpbb/debug') diff --git a/phpBB/phpbb/debug/debug.php b/phpBB/phpbb/debug/debug.php new file mode 100644 index 0000000000..76308e9197 --- /dev/null +++ b/phpBB/phpbb/debug/debug.php @@ -0,0 +1,70 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\debug; + +use Symfony\Component\Debug\BufferingLogger; +use Symfony\Component\Debug\DebugClassLoader; +use Symfony\Component\Debug\ExceptionHandler; +use Symfony\Component\Filesystem\Exception\IOException; + +/** + * Registers all the debug tools. + + * @see Symfony\Component\Debug\Debug + */ +class Debug +{ + private static $enabled = false; + + /** + * Enables the debug tools. + * + * This method registers an error handler and an exception handler. + * + * If the Symfony ClassLoader component is available, a special + * class loader is also registered. + * + * @param int $errorReportingLevel The level of error reporting you want + * @param bool $displayErrors Whether to display errors (for development) or just log them (for production) + */ + public static function enable($errorReportingLevel = null, $displayErrors = true) + { + if (static::$enabled) { + return; + } + + static::$enabled = true; + + if (null !== $errorReportingLevel) { + error_reporting($errorReportingLevel); + } else { + error_reporting(-1); + } + + if ('cli' !== php_sapi_name()) { + ini_set('display_errors', 0); + ExceptionHandler::register(); + } elseif ($displayErrors && (!ini_get('log_errors') || ini_get('error_log'))) { + // CLI - display errors only if they're not already logged to STDERR + ini_set('display_errors', 1); + } + if ($displayErrors) { + error_handler::register(new error_handler(new BufferingLogger())); + } else { + error_handler::register()->throwAt(0, true); + } + + DebugClassLoader::enable(); + } +} diff --git a/phpBB/phpbb/debug/error_handler.php b/phpBB/phpbb/debug/error_handler.php new file mode 100644 index 0000000000..2b182628a8 --- /dev/null +++ b/phpBB/phpbb/debug/error_handler.php @@ -0,0 +1,32 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\debug; + +use Symfony\Component\Debug\ErrorHandler; +use Symfony\Component\Filesystem\Exception\IOException; + +class error_handler extends ErrorHandler +{ + public function handleError($type, $message, $file, $line, array $context, array $backtrace = null) + { + if ($type === E_USER_WARNING|| $type === E_USER_NOTICE) + { + $handler = defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'; + + $handler($type, $message, $file, $line); + } + + return parent::handleError($type, $message, $file, $line, $context, $backtrace); + } +} -- cgit v1.2.1 From 6ffbd26377ae7a29dd10f3df5a3a4f76504e7d77 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 11 Dec 2015 21:39:24 +0100 Subject: [ticket/14177] CS PHPBB3-14177 --- phpBB/phpbb/debug/debug.php | 28 +++++++++++++++++++--------- phpBB/phpbb/debug/error_handler.php | 3 +-- 2 files changed, 20 insertions(+), 11 deletions(-) (limited to 'phpBB/phpbb/debug') diff --git a/phpBB/phpbb/debug/debug.php b/phpBB/phpbb/debug/debug.php index 76308e9197..c5ffada2e5 100644 --- a/phpBB/phpbb/debug/debug.php +++ b/phpBB/phpbb/debug/debug.php @@ -16,14 +16,13 @@ namespace phpbb\debug; use Symfony\Component\Debug\BufferingLogger; use Symfony\Component\Debug\DebugClassLoader; use Symfony\Component\Debug\ExceptionHandler; -use Symfony\Component\Filesystem\Exception\IOException; /** * Registers all the debug tools. * @see Symfony\Component\Debug\Debug */ -class Debug +class debug { private static $enabled = false; @@ -40,28 +39,39 @@ class Debug */ public static function enable($errorReportingLevel = null, $displayErrors = true) { - if (static::$enabled) { + if (static::$enabled) + { return; } static::$enabled = true; - if (null !== $errorReportingLevel) { + if ($errorReportingLevel !== null) + { error_reporting($errorReportingLevel); - } else { + } + else + { error_reporting(-1); } - if ('cli' !== php_sapi_name()) { + if ('cli' !== php_sapi_name()) + { ini_set('display_errors', 0); ExceptionHandler::register(); - } elseif ($displayErrors && (!ini_get('log_errors') || ini_get('error_log'))) { + } + else if ($displayErrors && (!ini_get('log_errors') || ini_get('error_log'))) + { // CLI - display errors only if they're not already logged to STDERR ini_set('display_errors', 1); } - if ($displayErrors) { + + if ($displayErrors) + { error_handler::register(new error_handler(new BufferingLogger())); - } else { + } + else + { error_handler::register()->throwAt(0, true); } diff --git a/phpBB/phpbb/debug/error_handler.php b/phpBB/phpbb/debug/error_handler.php index 2b182628a8..246e724f56 100644 --- a/phpBB/phpbb/debug/error_handler.php +++ b/phpBB/phpbb/debug/error_handler.php @@ -14,13 +14,12 @@ namespace phpbb\debug; use Symfony\Component\Debug\ErrorHandler; -use Symfony\Component\Filesystem\Exception\IOException; class error_handler extends ErrorHandler { public function handleError($type, $message, $file, $line, array $context, array $backtrace = null) { - if ($type === E_USER_WARNING|| $type === E_USER_NOTICE) + if ($type === E_USER_WARNING || $type === E_USER_NOTICE) { $handler = defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'; -- cgit v1.2.1 From cc4a68f32abcf959b4ddfebba07fdab8264e22db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Calvo?= Date: Fri, 25 May 2018 00:34:31 +0200 Subject: [ticket/15504] Fix warning message PHPBB3-15504 --- phpBB/phpbb/debug/error_handler.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'phpBB/phpbb/debug') diff --git a/phpBB/phpbb/debug/error_handler.php b/phpBB/phpbb/debug/error_handler.php index 246e724f56..ebd828b97f 100644 --- a/phpBB/phpbb/debug/error_handler.php +++ b/phpBB/phpbb/debug/error_handler.php @@ -17,7 +17,7 @@ use Symfony\Component\Debug\ErrorHandler; class error_handler extends ErrorHandler { - public function handleError($type, $message, $file, $line, array $context, array $backtrace = null) + public function handleError($type, $message, $file, $line) { if ($type === E_USER_WARNING || $type === E_USER_NOTICE) { @@ -26,6 +26,6 @@ class error_handler extends ErrorHandler $handler($type, $message, $file, $line); } - return parent::handleError($type, $message, $file, $line, $context, $backtrace); + return parent::handleError($type, $message, $file, $line); } } -- cgit v1.2.1