-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
Description
Symfony version(s) affected
4.4, 5.4 and 6.2
Description
I ran composer recipes:update symfony/framework-bundle and fixed the conflicts.
Then I wasn't able to run the console or browse the web version, I got this exception:
Argument 1 passed to Symfony\Component\Config\Loader\FileLoader::glob() must be of the type string, null given, called in /app/vendor/symfony/dependency-injection/Loader/FileLoader.php on line 180
Full stack trace
TypeError {#223
#message: "Argument 1 passed to Symfony\Component\Config\Loader\FileLoader::glob() must be of the type string, null given, called in /dev/shm/symfony-fileloader/vendor/symfony/dependency-injection/Loader/FileLoader.php on line 180"
#code: 0
#file: "/dev/shm/symfony-fileloader/vendor/symfony/config/Loader/FileLoader.php"
#line: 104
trace: {
/dev/shm/symfony-fileloader/vendor/symfony/config/Loader/FileLoader.php:104 { …}
/dev/shm/symfony-fileloader/vendor/symfony/dependency-injection/Loader/FileLoader.php:180 { …}
/dev/shm/symfony-fileloader/vendor/symfony/dependency-injection/Loader/FileLoader.php:105 { …}
/dev/shm/symfony-fileloader/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php:699 { …}
/dev/shm/symfony-fileloader/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php:256 { …}
/dev/shm/symfony-fileloader/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php:176 { …}
/dev/shm/symfony-fileloader/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php:132 { …}
/dev/shm/symfony-fileloader/vendor/symfony/config/Loader/FileLoader.php:159 { …}
/dev/shm/symfony-fileloader/vendor/symfony/config/Loader/FileLoader.php:98 { …}
/dev/shm/symfony-fileloader/vendor/symfony/dependency-injection/Loader/FileLoader.php:66 { …}
/dev/shm/symfony-fileloader/vendor/symfony/dependency-injection/Loader/Configurator/ContainerConfigurator.php:64 { …}
/dev/shm/symfony-fileloader/vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.php:58 { …}
/dev/shm/symfony-fileloader/vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.php:188 { …}
/dev/shm/symfony-fileloader/vendor/symfony/dependency-injection/Loader/ClosureLoader.php:39 { …}
/dev/shm/symfony-fileloader/vendor/symfony/config/Loader/DelegatingLoader.php:40 { …}
/dev/shm/symfony-fileloader/vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.php:196 { …}
/dev/shm/symfony-fileloader/vendor/symfony/http-kernel/Kernel.php:649 { …}
/dev/shm/symfony-fileloader/vendor/symfony/http-kernel/Kernel.php:545 { …}
/dev/shm/symfony-fileloader/vendor/symfony/http-kernel/Kernel.php:787 { …}
/dev/shm/symfony-fileloader/vendor/symfony/http-kernel/Kernel.php:128 { …}
/dev/shm/symfony-fileloader/vendor/symfony/framework-bundle/Console/Application.php:168 { …}
/dev/shm/symfony-fileloader/vendor/symfony/framework-bundle/Console/Application.php:74 { …}
/dev/shm/symfony-fileloader/vendor/symfony/console/Application.php:171 { …}
/dev/shm/symfony-fileloader/vendor/symfony/runtime/Runner/Symfony/ConsoleApplicationRunner.php:54 { …}
/dev/shm/symfony-fileloader/vendor/autoload_runtime.php:35 { …}
/dev/shm/symfony-fileloader/bin/console:11 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/dev/shm/symfony-fileloader/vendor/autoload_runtime.php"
}
}
}
}
By showing the content of the exclusion list, I was able to see the mistake:
services:
App\:
resource: '../src/'
exclude:
- '../src/DependencyInjection/'
- '../src/Entity/'
- '../src/Kernel.php'
-I probably messed up with my IDE when resolving conflicts, this is a valid YAML syntax but it breaks the file loader.
How to reproduce
-
create a project:
- 6.2:
composer create-project symfony/skeleton symfony-fileloader-6.2 ; cd symfony-fileloader-6.2 - 5.4:
composer create-project symfony/skeleton symfony-fileloader-5.4 "^5.4" ; cd symfony-fileloader-5.4 - 4.4:
composer create-project symfony/skeleton symfony-fileloader-4.4 "^4.4" ; cd symfony-fileloader-4.4
- 6.2:
-
add the following line in the exclude list in
config/services.yaml-
-
run
bin/console --version, it breaks!
Possible Solution
Ignore non-string values on this line:
| foreach ($this->glob($excludePattern, true, $resource, true, true) as $path => $info) { |
So that glob only receive a string as the first argument.
Or it may be an issue with the YAML loader: should a - node be ignored?
Of if an empty node has no practical usage in the configuration of Symfony, it may show an error.
Additional Context
No response