8000 [Debug] Wrap call to require_once in a try/catch · mathroc/symfony@afb6e1e · GitHub
[go: up one dir, main page]

Skip to content

Commit afb6e1e

Browse files
committed
[Debug] Wrap call to require_once in a try/catch
If the included file contains an error, it hides the real error. This makes debugging harder. How to reproduce: ``` composer create-project symfony/skeleton symfony-3.4 3.4 cd symfony-3.4 composer req monolog ``` Add to `monolog.yaml`: ```yaml elasticsearch: type: "elasticsearch" elasticsearch: host: 'elasticsearch' port: '9200' index: 'ep_php_logs_dev' level: 'debug' tags: 'monolog.logger' channels: ['!event'] ``` This will fail because the the \Elastica\Client class does not exist. But this error will be hidden by the `ClassNotFoundFatalErrorHandler` because it will try to load the `Symfony\Component\Kernel\Client` and this class extends `Symfony\Component\BrowserKit\Client`. The last one is a soft dependency... --- Before ``` Fatal error: Uncaught Error: Class 'Symfony\Component\BrowserKit\Client' not found in /tmp/symfony-3.4/vendor/symfony/http-kernel/Client.php:31 ``` After: ``` Fatal error: Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "Client" from namespace "Elastica". Did you forget a "use" statement for another namespace? in /tmp/symfony-es/var/cache/dev/ContainerWXN4mS9/srcApp_KernelDevDebugContainer.php:303 ```
1 parent 87855a5 commit afb6e1e

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/Symfony/Component/Debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,11 @@ private function convertFileToClass($path, $file, $prefix)
185185
}
186186
}
187187

188-
require_once $file;
188+
try {
189+
require_once $file;
190+
} catch (\Throwable $e) {
191+
return null;
192+
}
189193

190194
foreach ($candidates as $candidate) {
191195
if ($this->classExists($candidate)) {

0 commit comments

Comments
 (0)
0