Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5e43a69

Browse files
[FrameworkBundle] enable ErrorHandler in prod
1 parent4b6776e commit5e43a69

File tree

4 files changed

+51
-7
lines changed

4 files changed

+51
-7
lines changed

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,6 @@ public function load(array $configs, ContainerBuilder $container)
133133
if ($container->getParameter('kernel.debug')) {
134134
$loader->load('debug.xml');
135135

136-
$definition->replaceArgument(0,array(newReference('http_kernel', ContainerInterface::NULL_ON_INVALID_REFERENCE),'terminateWithException'));
137-
138136
$definition =$container->findDefinition('http_kernel');
139137
$definition->replaceArgument(2,newReference('debug.controller_resolver'));
140138

@@ -145,11 +143,15 @@ public function load(array $configs, ContainerBuilder $container)
145143
$container->setAlias('event_dispatcher','debug.event_dispatcher');
146144
}else {
147145
$definition->replaceArgument(2,E_COMPILE_ERROR |E_PARSE |E_ERROR |E_CORE_ERROR);
146+
147+
$container->findDefinition('debug.error_handler')->addMethodCall('throwAt',array(0));
148148
}
149149

150150
$this->addClassesToCompile(array(
151151
'Symfony\\Component\\Config\\FileLocator',
152152

153+
'Symfony\\Component\\Debug\\ErrorHandler',
154+
153155
'Symfony\\Component\\EventDispatcher\\Event',
154156
'Symfony\\Component\\EventDispatcher\\ContainerAwareEventDispatcher',
155157

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/debug_prod.xml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
<parameters>
88
<parameterkey="debug.debug_handlers_listener.class">Symfony\Component\HttpKernel\EventListener\DebugHandlersListener</parameter>
9+
<parameterkey="debug.error_handler.class">Symfony\Component\Debug\ErrorHandler</parameter>
910
<parameterkey="debug.stopwatch.class">Symfony\Component\Stopwatch\Stopwatch</parameter>
1011
</parameters>
1112

@@ -20,6 +21,8 @@
2021
<argument>null</argument><!-- %templating.helper.code.file_link_format%-->
2122
</service>
2223

24+
<serviceid="debug.error_handler"class="%debug.error_handler.class%"factory-class="%debug.error_handler.class%"factory-method="register" />
25+
2326
<serviceid="debug.stopwatch"class="%debug.stopwatch.class%" />
2427
</services>
2528
</container>

‎src/Symfony/Component/Debug/ErrorHandler.php‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,15 @@ public static function register($levels = -1, $throw = true)
124124

125125
$handler =newstatic();
126126
$levels &=$handler->thrownErrors;
127-
set_error_handler(array($handler,'handleError'),$levels);
127+
$prev =set_error_handler(array($handler,'handleError'),$levels);
128+
$prev =is_array($prev) ?$prev[0] :null;
129+
if ($previnstanceof self) {
130+
restore_error_handler();
131+
$handler =$prev;
132+
}else {
133+
$handler->setExceptionHandler(set_exception_handler(array($handler,'handleException')));
134+
}
128135
$handler->throwAt($throw ?$levels :0,true);
129-
$handler->setExceptionHandler(set_exception_handler(array($handler,'handleException')));
130136

131137
return$handler;
132138
}

‎src/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php‎

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,14 @@
1414
usePsr\Log\LoggerInterface;
1515
useSymfony\Component\Debug\ErrorHandler;
1616
useSymfony\Component\Debug\ExceptionHandler;
17+
useSymfony\Component\EventDispatcher\Event;
18+
useSymfony\Component\EventDispatcher\EventDispatcherInterface;
1719
useSymfony\Component\EventDispatcher\EventSubscriberInterface;
20+
useSymfony\Component\HttpKernel\Event\KernelEvent;
1821
useSymfony\Component\HttpKernel\KernelEvents;
22+
useSymfony\Component\Console\ConsoleEvents;
23+
useSymfony\Component\Console\Event\ConsoleEvent;
24+
useSymfony\Component\Console\Output\ConsoleOutputInterface;
1925

2026
/**
2127
* Configures errors and exceptions handlers.
@@ -28,6 +34,7 @@ class DebugHandlersListener implements EventSubscriberInterface
2834
private$logger;
2935
private$levels;
3036
private$debug;
37+
private$fileLinkFormat;
3138

3239
/**
3340
* @param callable $exceptionHandler A handler that will be called on Exception
@@ -45,8 +52,18 @@ public function __construct($exceptionHandler, LoggerInterface $logger = null, $
4552
$this->fileLinkFormat =$fileLinkFormat ?:ini_get('xdebug.file_link_format') ?:get_cfg_var('xdebug.file_link_format');
4653
}
4754

48-
publicfunctionconfigure()
55+
/**
56+
* Configures the error handler.
57+
*
58+
* @param Event|null $event The triggering event
59+
* @param string|null $eventName The triggering event name
60+
* @param EventDispatcherInterface|null $eventDispatcher The dispatcher used to trigger $event
61+
*/
62+
publicfunctionconfigure(Event$event =null,$eventName =null,EventDispatcherInterface$eventDispatcher =null)
4963
{
64+
if (null !==$eventDispatcher) {
65+
$eventDispatcher->removeListener(array_keys(static::getSubscribedEvents()),array($this,'configure'));
66+
}
5067
if ($this->logger) {
5168
$handler =set_error_handler('var_dump',0);
5269
$handler =is_array($handler) ?$handler[0] :null;
@@ -65,7 +82,20 @@ public function configure()
6582
}
6683
$handler->screamAt($this->levels);
6784
}
68-
$this->logger =$this->levels =null;
85+
$this->logger =$this->levels =$this->debug =$this->fileLinkFormat =null;
86+
}
87+
if (!$this->exceptionHandler) {
88+
if ($eventinstanceof KernelEvent) {
89+
$this->exceptionHandler =array($event->getKernel(),'terminateWithException');
90+
}elseif ($eventinstanceof ConsoleEvent &&$app =$event->getCommand()->getApplication()) {
91+
$output =$event->getOutput();
92+
if ($outputinstanceof ConsoleOutputInterface) {
93+
$output =$output->getErrorOutput();
94+
}
95+
$this->exceptionHandler =function ($e)use ($app,$output) {
96+
$app->renderException($e,$output);
97+
};
98+
}
6999
}
70100
if ($this->exceptionHandler) {
71101
$handler =set_exception_handler('var_dump');
@@ -86,6 +116,9 @@ public function configure()
86116

87117
publicstaticfunctiongetSubscribedEvents()
88118
{
89-
returnarray(KernelEvents::REQUEST =>array('configure',2048));
119+
returnarray(
120+
KernelEvents::REQUEST =>array('configure',2048),
121+
ConsoleEvents::COMMAND =>array('configure',2048),
122+
);
90123
}
91124
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp