mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[ticket/14177] Uses Symfony's Debug ErrorHandler in development environment
PHPBB3-14177
This commit is contained in:
parent
7c05b881c5
commit
dee22f4a28
3 changed files with 121 additions and 6 deletions
|
@ -90,8 +90,14 @@ include($phpbb_root_path . 'includes/functions_compatibility.' . $phpEx);
|
||||||
require($phpbb_root_path . 'includes/constants.' . $phpEx);
|
require($phpbb_root_path . 'includes/constants.' . $phpEx);
|
||||||
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
|
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
|
||||||
|
|
||||||
// Set PHP error handler to ours
|
if (PHPBB_ENVIRONMENT === 'development')
|
||||||
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');
|
{
|
||||||
|
\phpbb\debug\debug::enable();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');
|
||||||
|
}
|
||||||
|
|
||||||
$phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx);
|
$phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx);
|
||||||
$phpbb_class_loader_ext->register();
|
$phpbb_class_loader_ext->register();
|
||||||
|
@ -104,10 +110,17 @@ try
|
||||||
}
|
}
|
||||||
catch (InvalidArgumentException $e)
|
catch (InvalidArgumentException $e)
|
||||||
{
|
{
|
||||||
trigger_error(
|
if (PHPBB_ENVIRONMENT !== 'development')
|
||||||
'The requested environment ' . PHPBB_ENVIRONMENT . ' is not available.',
|
{
|
||||||
E_USER_ERROR
|
trigger_error(
|
||||||
);
|
'The requested environment ' . PHPBB_ENVIRONMENT . ' is not available.',
|
||||||
|
E_USER_ERROR
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$phpbb_class_loader->set_cache($phpbb_container->get('cache.driver'));
|
$phpbb_class_loader->set_cache($phpbb_container->get('cache.driver'));
|
||||||
|
|
70
phpBB/phpbb/debug/debug.php
Normal file
70
phpBB/phpbb/debug/debug.php
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This file is part of the phpBB Forum Software package.
|
||||||
|
*
|
||||||
|
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||||
|
* @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();
|
||||||
|
}
|
||||||
|
}
|
32
phpBB/phpbb/debug/error_handler.php
Normal file
32
phpBB/phpbb/debug/error_handler.php
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This file is part of the phpBB Forum Software package.
|
||||||
|
*
|
||||||
|
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||||
|
* @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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue