Symfony 7.4.17 has just been released.
Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in your project.
Tip
Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.
Changelog Since Symfony 7.4.16
- bug #65541 [Serializer] Fix denormalizing mime messages typed as RawMessage (@nicolas-grekas)
- bug #65524 [Security] Match check paths given as a route alias (@nicolas-grekas)
- minor #65585 [Validator] Review the German translations for the EntityExists and Ulid messages (@wazum)
- bug #65521 [WebProfilerBundle] Fix the mailer panel crashing when an attached file was deleted (@nicolas-grekas)
- bug #65514 [Messenger] Tell apart handler services that share the same class (@nicolas-grekas)
- minor #65583 [Validator] Review Croatian translations (@HypeMC)
- bug #65506 [Validator] Fix auto-mapping strategies being ignored on inherited properties (@nicolas-grekas)
- bug #65584 [Form] Map violations to child forms named after the snake cased property (@nicolas-grekas)
- bug #65582 [CssSelector] Fix :disabled and :enabled inside nested fieldsets (@nicolas-grekas)
- bug #65579 [TypeInfo] Fix resolving constants defined on interfaces (@llupa)
- bug #65540 [HttpKernel] Fix caching responses that cannot provide their content (@nicolas-grekas)
- bug #65538 [Form] Fix rendering and parsing dates before the Gregorian cutover (@nicolas-grekas)
- bug #65534 [ErrorHandler] Fix leaking an exception handler when not replacing the error handler (@nicolas-grekas)
- bug #65533 [Scheduler] Reject canceled scheduled messages so async transports do not redeliver them (@nicolas-grekas)
- bug #65532 [DependencyInjection] Keep escaping when resolving values against a resolved parameter bag (@nicolas-grekas)
- bug #65530 [Form] Apply the configured rounding mode when no scale is set (@nicolas-grekas)
- bug #65526 [HttpKernel] Restore the locale that was in use before a sub-request (@nicolas-grekas)
- bug #65525 [FrameworkBundle] Fix lint:container skipping services matched by tagged iterators (@nicolas-grekas)
- bug #65522 [Form] Do not inherit translation parameters for translatable labels and help messages (@nicolas-grekas)
- bug #65519 [DomCrawler] Detect the charset from meta tags only (@nicolas-grekas)
- bug #65517 [FrameworkBundle] Fix dispatching console events after cache:clear (@nicolas-grekas)
- bug #65516 [HttpKernel] Forward the request headers to inline rendered fragments (@nicolas-grekas)
- bug #65513 [Messenger] Ignore the option-less handler tag added by autoconfiguration (@nicolas-grekas)
- bug #65512 [HttpKernel] Ignore the session id that PHP kept from a previous request (@nicolas-grekas)
- bug #65511 [Serializer] Fix SerializedName being ignored on denormalization when the attribute has groups (@nicolas-grekas)
- bug #65510 [PhpUnitBridge] Fix finding the project root when vendor/ is a symlink (@nicolas-grekas)
- bug #65509 [Mime] Reject an unquoted "@" in the local part of an email address (@nicolas-grekas)
- bug #65508 [Intl] Follow the ICU parent locale when falling back (@nicolas-grekas)
- bug #65507 [BrowserKit] Fix decoding raw cookie values that contain a plus sign (@nicolas-grekas)
- bug #65504 [Messenger] Stop applying serialization groups and attribute filters to stamps (@nicolas-grekas)
- bug #65502 [Security] Refresh the impersonator while impersonating (@nicolas-grekas)
- bug #65501 [PropertyInfo] Fix the priority of the accessor named after the property (@nicolas-grekas)
- bug #65499 [Serializer] Fix XmlEncoder dropping the extra attributes of item elements on decode (@nicolas-grekas)
- bug #65491 [Serializer] Allow the attributes of nested discriminator maps when denormalizing (@nicolas-grekas)
- bug #65580 [Notifier] Fix SendFailedMessageToNotifierListener rejecting any notifier but the concrete one (@nicolas-grekas)
- bug #65476 [DoctrineBridge][EventDispatcher] Fix losing listeners when a lazy listener adds listeners (@nicolas-grekas)
- bug #65498 [Process] Do not wait for output when the input iterator has more data (@nicolas-grekas)
- bug #65495 [TwigBridge] Fix the broken error box around Bootstrap 4 date and time widgets (@nicolas-grekas)
- bug #65494 [Translation] Stop leaking a temporary schema copy per validated XLIFF file inside a phar (@nicolas-grekas)
- bug #65493 [Serializer] Fix XmlEncoder skipping normalizers for nested Traversable values (@nicolas-grekas)
- bug #65489 [Scheduler] Fix refreshing the checkpoint lock with a negative TTL (@nicolas-grekas)
- bug #65488 [MonologBridge] Fix NotifierHandler calling a method that NotifierInterface does not declare (@nicolas-grekas)
- bug #65487 [Messenger] Fail when messenger:consume is given no receiver (@nicolas-grekas)
- bug #65486 [Messenger] Remove the worker listeners when messenger:consume ends (@nicolas-grekas)
- bug #65485 [Mailer] Remove metadata headers from the emails sent by the SES HTTP transports (@nicolas-grekas)
- bug #65484 [HttpClient] Fix CachingHttpClient when trusted hosts are configured (@nicolas-grekas)
- bug #65483 [FrameworkBundle] Show the effective priority of tagged services in debug:container (@nicolas-grekas)
- bug #65482 [FrameworkBundle] Fix ignored --raw option of debug:router (@nicolas-grekas)
- bug #65481 [FrameworkBundle] Fix debug:config and config:dump-reference when a bundle registers services in its build method (@nicolas-grekas)
- bug #65479 [Form] Fix generating the CSRF token when the form attributes are replaced (@nicolas-grekas)
- bug #65474 [DependencyInjection] Fix compiling nested service locators (@nicolas-grekas)
- bug #65473 [DependencyInjection] Fix sorting tagged services when autoconfiguration duplicates a tag (@nicolas-grekas)
- bug #65578 [Form] Apply the guessed "pattern" and "maxlength" attributes to the types rendered as text inputs (@nicolas-grekas)
- minor #65574 [Validator] Update Albanian translations (@llupa)
- bug #65528 [Security] Track session usage when a lazy firewall reads the token (@nicolas-grekas)
- bug #65527 [Mailer] Fix emails reported twice when they are queued and sent in the same process (@nicolas-grekas)
- bug #65523 [PropertyInfo] Use the same mutator method for types and write info (@nicolas-grekas)
- bug #65520 [BrowserKit] Return the most specific cookie when several ones match (@nicolas-grekas)
- bug #65505 [Form] Apply the guessed "pattern" and "maxlength" attributes to text inputs only (@nicolas-grekas)
- bug #65496 [HttpKernel] Send the response content before terminating the kernel in the test client (@nicolas-grekas)
- bug #65492 [Serializer] Allow array indexes in the property paths of attributes when denormalizing (@nicolas-grekas)
- minor #65577 Add skill to merge PRs (@nicolas-grekas)
- minor #65571 [Validator] Review Brazilian Portuguese translations (@henriquejsza)
- bug #65529 [Finder] Fix gitignore matching of negated patterns and excluded directories (@nicolas-grekas)
- minor #65572 [Validator] Review French translations (@Amoifr)
- bug #65546 [Scheduler] Fix infinite loop in MessageGenerator when a trigger does not move the run date forward (@lazerg)
- bug #65500 [Console] Keep backslashes preceding < and > when escaping text (@nicolas-grekas)
- bug #65542 [DependencyInjection] Detect circular references through a shared factory builder (@nicolas-grekas)
- bug #65477 [Finder] Do not report dangling symlinks as both files and directories (@nicolas-grekas)
- bug #65472 [HttpKernel] Write pending dumps to the output before dd() exits (@nicolas-grekas)
- bug #65471 [Console] Fix clearing more lines than a section holds (@nicolas-grekas)
- bug #65470 [Yaml] Fix parsing tagged block scalars inside sequences (@nicolas-grekas)
- bug #65537 [Filesystem] Fix mirror() deleting files from the origin directory (@nicolas-grekas)
- bug #65518 [Translation] Fix pushing numeric translation keys to Lokalise (@nicolas-grekas)
- bug #65547 [VarDumper] Fix division by zero when dumping a DatePeriod whose interval does not move forward (@lazerg)
- bug #65544 [Mailer] Fix the SMTP scheme check in the transport factory test case (@nicolas-grekas)
- bug #65503 [VarDumper] Fix losing colors when dumping to php://output on the CLI (@nicolas-grekas)
- bug #65469 [Scheduler] Fix infinite loop in PeriodicalTrigger when the interval cannot move the run date forward (@wazum)
- bug #65475 [ErrorHandler] Don't autoload when resolving "@return" class constants (@nicolas-grekas)
- bug #65478 [Form] Replace the {{ max }} placeholder in the post_max_size error message (@nicolas-grekas)
- bug #65480 [Form] Fix the money pattern for locales that do not use ASCII digits (@nicolas-grekas)
- bug #65465 [TwigBridge] Pass a valid XML version to DOMDocument in the form layout test case (@nicolas-grekas)
- minor #65453 [Validator] Add the EntityExists and Ulid message translation units (@nicolas-grekas)
- bug #65448 [HttpKernel] Fix concurrent cache warmups corrupting the deprecations log (@lazerg)
- bug #65444 [Config] Fix dumping keyless prototyped arrays of arrays in XmlReferenceDumper (@nicolas-grekas)
- bug #65441 [DependencyInjection] Skip abstract classes and interfaces in findTaggedResourceIds() (@nicolas-grekas)
- bug #65430 [Cache] Validate every key before deleting any in ArrayAdapter::deleteItems() (@nicolas-grekas)
- bug #65429 [Cache] Fix numeric string keys being cast to integers (@nicolas-grekas)
- bug #65425 [Yaml] Fix parsing an alias followed by a comment (@eyupcanakman)
- bug #65421 [Cache] Fix Predis ignoring the "auth" parameter set in the DSN or in the options (@nicolas-grekas)
- bug #65423 [WebProfilerBundle] Fix wrongly disabled tabs and toggles that cannot be focused (@Nitram1123)
- bug #65422 [Security] Reject malformed login link parameters instead of throwing a TypeError (@nicolas-grekas)
- bug #65419 [Console] Consume the whole escape sequence when reading autocomplete input (@nicolas-grekas)
- bug #65395 [Yaml] Do not treat an uppercase 0X prefix as hexadecimal (@eyupcanakman)
- bug #65388 [Notifier][Mercure] Add support for Mercure 0.8 (@lazerg)
- bug #65392 [DomCrawler] Fix FormField::getLabel() when the field id contains a quote (@nicolas-grekas)
- bug #65391 [DomCrawler] Read the whole content of a textarea (@nicolas-grekas)
- bug #65382 [DomCrawler] Fix matches(), closest() and children() for selectors with a combinator or a positional pseudo-class (@nicolas-grekas)
- bug #65366 [ObjectMapper] Only honor an explicitly inbound target #[Map] for the same-name copy (@soyuka)
- bug #65376 [Validator] Allow a literal # in the fragment part of Url (@lazerg)
- minor #65378 Add an agent skill for authoring pull requests (@nicolas-grekas)
- bug #65371 [Translation] Read CSV translations without SplFileObject (@nicolas-grekas)
- bug #65372 [HttpFoundation] Declare create_sid() on session handlers (@nicolas-grekas)
- bug #65367 Fix PHP 8.6 deprecations (@nicolas-grekas)
- bug #65363 [MonologBridge] Release command data in ConsoleCommandProcessor when the command terminates (@tomsommer)
- bug #65352 [Mailer] Reconnect after a timeout to avoid SMTP response desync (@ousamabenyounes)
- bug #65354 [Serializer] Throw on XML data without a root node (@nicolas-grekas)
- bug #65315 [Translation] Do not extract messages from classes merely named TranslatableMessage (@nicolas-grekas)
- bug #65314 [HttpClient] Fix abandoned wrapped response throwing on destruct (@nicolas-grekas)
- bug #65311 [HttpClient] Fix mis-armed consumption guard in AsyncResponse::stream() (@nicolas-grekas)
- minor #65310 [HttpClient] Remove unused code in AsyncResponse::__destruct() (@lyrixx)
- bug #65305 [Messenger] Handle synchronous batch nack (@eissasoubhi)
- bug #65303 [FrameworkBundle] Do not leak the response body from assertResponseRedirects() when not verbose (@nicolas-grekas)
- bug #65296 [DoctrineBridge] Fix removing lazy listeners by object (@eissasoubhi)
- minor #65290 [FrameworkBundle] Tolerate a newer DependencyInjection InstanceofType shape in the reference fixture (@nicolas-grekas)
- bug #65288 [Cache] Fix stampede protection not being disabled on CLI (@nicolas-grekas)
- bug #65274 [Mailer][Notifier] Avoid retaining messages without the profiler (@eissasoubhi)
- bug #65278 [FrameworkBundle] Reset the notification logger listener between messages (@nicolas-grekas)
- bug #65271 [DependencyInjection] Fix circular references through expressions (@eissasoubhi)
- bug #65273 [Notifier][Sevenio] Fix successful sends being reported as failures (@lazerg)
- bug #65275 [PropertyInfo] Ignore methods that only look like accessors (@nicolas-grekas)
- bug #65263 [Console] Keep falsy answers when collecting an array with #[Ask] (@sadiqk2)
- bug #65264 [Mime] Do not drop the last line of a resource-backed message (@sadiqk2)
- bug #65265 [Uid] Compare times by value in MockUuidFactory (@sadiqk2)
- bug #65262 [AssetMapper] Include front controller in dev asset URLs (@eissasoubhi)
- bug #65260 [Messenger][AmazonSqs] Support queue URLs from the aws-cn and aws-eusc partitions (@bhavin-nakrani)
- bug #65258 [Console] Restore the catchExceptions state after running a command message (@KevinMartinsDev)
- bug #65252 [HttpFoundation] Combine trusted host patterns into a single regexp (@nicolas-grekas)
- bug #65250 [DependencyInjection] Fix class-level tag attributes being overridden by interface-level ones (@nicolas-grekas)
- bug #65249 [DependencyInjection][HttpKernel] Fix undefined variable when locking the container build fails early (@javiereguiluz)