Description
Symfony version(s) affected
v7.1.0-BETA1
Description
After upgrading from Symfony v7.0.7 to v7.1.0-BETA1, my PHP configuration files using ConfigBuilder classes trigger exceptions for each param
or env
function, like
Invalid type for path "framework.secret". Expected "scalar", but got "Symfony\Component\DependencyInjection\Loader\Configurator\EnvConfigurator".
Stack trace
Symfony\Component\Config\Definition\Exception\InvalidTypeException: Invalid type for path "framework.secret". Expected "scalar", but got "Symfony\Component\DependencyInjection\Loader\Configurator\EnvConfigurator".at /srv/app/vendor/symfony/config/Definition/ScalarNode.php:33
at Symfony\Component\Config\Definition\ScalarNode->validateType(object(EnvConfigurator))
(/srv/app/vendor/symfony/config/Definition/BaseNode.php:487)
at Symfony\Component\Config\Definition\BaseNode->doValidateType(object(EnvConfigurator))
(/srv/app/vendor/symfony/config/Definition/BaseNode.php:354)
at Symfony\Component\Config\Definition\BaseNode->normalize(object(EnvConfigurator))
(/srv/app/vendor/symfony/config/Definition/ArrayNode.php:269)
at Symfony\Component\Config\Definition\ArrayNode->normalizeValue(array('secret' => object(EnvConfigurator), 'test' => false, 'session' => array('storage_factory_id' => 'session.storage.factory.native'), 'exceptions' => array('App\Domain\BrokenInvariantException' => array('status_code' => 422))))
(/srv/app/vendor/symfony/config/Definition/BaseNode.php:357)
at Symfony\Component\Config\Definition\BaseNode->normalize(array('secret' => object(EnvConfigurator), 'test' => false, 'session' => array('storage_factory_id' => 'session.storage.factory.native'), 'exceptions' => array('App\Domain\BrokenInvariantException' => array('status_code' => 422))))
(/srv/app/vendor/symfony/config/Definition/Processor.php:32)
at Symfony\Component\Config\Definition\Processor->process(object(ArrayNode), array(array('router' => array('resource' => 'kernel::loadRoutes', 'type' => 'service')), array('asset_mapper' => array('paths' => array('assets/' => ''))), array(), array('secret' => object(EnvConfigurator), 'test' => false, 'session' => array('storage_factory_id' => 'session.storage.factory.native'), 'exceptions' => array('App\Domain\BrokenInvariantException' => array('status_code' => 422))), array('mailer' => array('dsn' => object(EnvConfigurator))), array('router' => array('strict_requirements' => true)), array('default_locale' => 'en', 'enabled_locales' => array('en', 'fr'), 'translator' => array('default_path' => '/srv/app/translations', 'paths' => array('/srv/app/src/UseCase/DisplayAuthStatus/translations' => '/srv/app/src/UseCase/DisplayAuthStatus/translations', '/srv/app/src/UseCase/ListPublishedJobOffers/translations' => '/srv/app/src/UseCase/ListPublishedJobOffers/translations', '/srv/app/src/UseCase/PreviewJobOffer/translations' => '/srv/app/src/UseCase/PreviewJobOffer/translations', '/srv/app/src/UseCase/PublishJobOffer/translations' => '/srv/app/src/UseCase/PublishJobOffer/translations', '/srv/app/src/UseCase/ShowPublishedJobOffer/translations' => '/srv/app/src/UseCase/ShowPublishedJobOffer/translations', '/srv/app/src/UseCase/UpsertJobOffer/translations' => '/srv/app/src/UseCase/UpsertJobOffer/translations'))), array('profiler' => array('collect_serializer_data' => true))))
(/srv/app/vendor/symfony/config/Definition/Processor.php:46)
at Symfony\Component\Config\Definition\Processor->processConfiguration(object(Configuration), array(array('router' => array('resource' => 'kernel::loadRoutes', 'type' => 'service')), array('asset_mapper' => array('paths' => array('assets/' => ''))), array(), array('secret' => object(EnvConfigurator), 'test' => false, 'session' => array('storage_factory_id' => 'session.storage.factory.native'), 'exceptions' => array('App\Domain\BrokenInvariantException' => array('status_code' => 422))), array('mailer' => array('dsn' => object(EnvConfigurator))), array('router' => array('strict_requirements' => true)), array('default_locale' => 'en', 'enabled_locales' => array('en', 'fr'), 'translator' => array('default_path' => '/srv/app/translations', 'paths' => array('/srv/app/src/UseCase/DisplayAuthStatus/translations' => '/srv/app/src/UseCase/DisplayAuthStatus/translations', '/srv/app/src/UseCase/ListPublishedJobOffers/translations' => '/srv/app/src/UseCase/ListPublishedJobOffers/translations', '/srv/app/src/UseCase/PreviewJobOffer/translations' => '/srv/app/src/UseCase/PreviewJobOffer/translations', '/srv/app/src/UseCase/PublishJobOffer/translations' => '/srv/app/src/UseCase/PublishJobOffer/translations', '/srv/app/src/UseCase/ShowPublishedJobOffer/translations' => '/srv/app/src/UseCase/ShowPublishedJobOffer/translations', '/srv/app/src/UseCase/UpsertJobOffer/translations' => '/srv/app/src/UseCase/UpsertJobOffer/translations'))), array('profiler' => array('collect_serializer_data' => true))))
(/srv/app/vendor/symfony/dependency-injection/Extension/Extension.php:109)
at Symfony\Component\DependencyInjection\Extension\Extension->processConfiguration(object(Configuration), array(array('router' => array('resource' => 'kernel::loadRoutes', 'type' => 'service')), array('asset_mapper' => array('paths' => array('assets/' => ''))), array(), array('secret' => object(EnvConfigurator), 'test' => false, 'session' => array('storage_factory_id' => 'session.storage.factory.native'), 'exceptions' => array('App\Domain\BrokenInvariantException' => array('status_code' => 422))), array('mailer' => array('dsn' => object(EnvConfigurator))), array('router' => array('strict_requirements' => true)), array('default_locale' => 'en', 'enabled_locales' => array('en', 'fr'), 'translator' => array('default_path' => '/srv/app/translations', 'paths' => array('/srv/app/src/UseCase/DisplayAuthStatus/translations' => '/srv/app/src/UseCase/DisplayAuthStatus/translations', '/srv/app/src/UseCase/ListPublishedJobOffers/translations' => '/srv/app/src/UseCase/ListPublishedJobOffers/translations', '/srv/app/src/UseCase/PreviewJobOffer/translations' => '/srv/app/src/UseCase/PreviewJobOffer/translations', '/srv/app/src/UseCase/PublishJobOffer/translations' => '/srv/app/src/UseCase/PublishJobOffer/translations', '/srv/app/src/UseCase/ShowPublishedJobOffer/translations' => '/srv/app/src/UseCase/ShowPublishedJobOffer/translations', '/srv/app/src/UseCase/UpsertJobOffer/translations' => '/srv/app/src/UseCase/UpsertJobOffer/translations'))), array('profiler' => array('collect_serializer_data' => true))))
(/srv/app/vendor/symfony/framework-bundle/DependencyInjection/FrameworkExtension.php:262)
at Symfony\Bundle\FrameworkBundle\DependencyInjection\FrameworkExtension->load(array(array('router' => array('resource' => 'kernel::loadRoutes', 'type' => 'service')), array('asset_mapper' => array('paths' => array('assets/' => ''))), array(), array('secret' => object(EnvConfigurator), 'test' => false, 'session' => array('storage_factory_id' => 'session.storage.factory.native'), 'exceptions' => array('App\Domain\BrokenInvariantException' => array('status_code' => 422))), array('mailer' => array('dsn' => object(EnvConfigurator))), array('router' => array('strict_requirements' => true)), array('default_locale' => 'en', 'enabled_locales' => array('en', 'fr'), 'translator' => array('default_path' => '/srv/app/translations', 'paths' => array('/srv/app/src/UseCase/DisplayAuthStatus/translations' => '/srv/app/src/UseCase/DisplayAuthStatus/translations', '/srv/app/src/UseCase/ListPublishedJobOffers/translations' => '/srv/app/src/UseCase/ListPublishedJobOffers/translations', '/srv/app/src/UseCase/PreviewJobOffer/translations' => '/srv/app/src/UseCase/PreviewJobOffer/translations', '/srv/app/src/UseCase/PublishJobOffer/translations' => '/srv/app/src/UseCase/PublishJobOffer/translations', '/srv/app/src/UseCase/ShowPublishedJobOffer/translations' => '/srv/app/src/UseCase/ShowPublishedJobOffer/translations', '/srv/app/src/UseCase/UpsertJobOffer/translations' => '/srv/app/src/UseCase/UpsertJobOffer/translations'))), array('profiler' => array('collect_serializer_data' => true))), object(MergeExtensionConfigurationContainerBuilder))
(/srv/app/vendor/symfony/dependency-injection/Compiler/MergeExtensionConfigurationPass.php:81)
at Symfony\Component\DependencyInjection\Compiler\MergeExtensionConfigurationPass->process(object(ContainerBuilder))
(/srv/app/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php:40)
at Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass->process(object(ContainerBuilder))
(/srv/app/vendor/symfony/dependency-injection/Compiler/Compiler.php:73)
at Symfony\Component\DependencyInjection\Compiler\Compiler->compile(object(ContainerBuilder))
(/srv/app/vendor/symfony/dependency-injection/ContainerBuilder.php:752)
at Symfony\Component\DependencyInjection\ContainerBuilder->compile()
(/srv/app/vendor/symfony/http-kernel/Kernel.php:495)
at Symfony\Component\HttpKernel\Kernel->initializeContainer()
(/srv/app/vendor/symfony/http-kernel/Kernel.php:732)
at Symfony\Component\HttpKernel\Kernel->preBoot()
(/srv/app/vendor/symfony/http-kernel/Kernel.php:170)
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
(/srv/app/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
(/srv/app/vendor/autoload_runtime.php:29)
at require_once('/srv/app/vendor/autoload_runtime.php')
(/srv/app/public/index.php:5)
How to reproduce
Write a configuration in PHP using the param
or env
function, like
<?php
// config/packages/framework.php
use Symfony\Config\FrameworkConfig;
use function Symfony\Component\DependencyInjection\Loader\Configurator\env;
return static function (FrameworkConfig $framework, string $env): void {
$framework->secret(env('APP_SECRET'));
};
Possible Solution
No response
Additional Context
This seems to be caused by #52843.