Symfony 4 was released on November 30th.
Update now to the best Symfony ever!

Symfony 4.0.0-RC1 released

Symfony 4.0.0-RC1 has just been released. Here is a list of the most important changes:

  • bug #25077 [Bridge/Twig] Let getFlashes starts the session (@MatTheCat)
  • bug #25082 [HttpKernel] Disable container inlining when legacy inlining has been used (@nicolas-grekas)
  • bug #25022 [Filesystem] Updated Filesystem::makePathRelative (@inso)
  • bug #25072 [Bridge/PhpUnit] Remove trailing "n" from ClockMock::microtime(false) (@joky)
  • bug #25069 [Debug] Fix undefined variable $lightTrace (@nicolas-grekas)
  • bug #25053 [Serializer] Fixing PropertyNormalizer supports parent properties (@Christopher Hertel)
  • bug #25055 [DI] Analyze setter-circular deps more precisely (@nicolas-grekas)
  • feature #25056 [Bridge/PhpUnit] Sync the bridge version installed in vendor/ and in phpunit clone (@nicolas-grekas)
  • bug #25048 Allow EnumNode name to be null (@MatTheCat)
  • bug #25045 [SecurityBundle] Don't trigger auto-picking notice if provider is set per listener (@chalasr)
  • bug #25033 [FrameworkBundle] Dont create empty bundles directory by default (@ro0NL)
  • bug #25037 [DI] Skip hot_path tag for deprecated services as their class might also be (@nicolas-grekas)
  • bug #25038 [Cache] Memcached options should ignore "lazy" (@nicolas-grekas)
  • bug #25014 Move deprecation under use statements (@greg0ire)
  • bug #25030 [Console] Fix ability to disable lazy commands (@chalasr)
  • bug #25032 [BridgePhpUnit] Disable broken auto-require mechanism of phpunit (@nicolas-grekas)
  • bug #25016 [HttpKernel] add type-hint for the requestType (@Simperfit)
  • bug #25027 [FrameworkBundle] Hide server:log command based on deps (@sroze)
  • bug #24991 [DependencyInjection] Single typed argument can be applied on multiple parameters (@nicolas-grekas, @sroze)
  • bug #24983 [Validator] enter the context in which to validate (@xabbuh)
  • bug #24956 Fix ambiguous pattern (@weltling)
  • bug #24732 [DependencyInjection] Prevent service:method factory notation in PHP config (@vudaltsov)
  • bug #24979 [HttpKernel] remove services resetter even when it's an alias (@xabbuh)
  • bug #24972 [HttpKernel] Fix service arg resolver for controllers as array callables (@sroze, @nicolas-grekas)
  • bug #24971 [FrameworkBundle] Empty event dispatcher earlier in CacheClearCommand (@nicolas-grekas)
  • security #24995 Validate redirect targets using the session cookie domain (@nicolas-grekas)
  • security #24994 Prevent bundle readers from breaking out of paths (@xabbuh)
  • security #24993 Ensure that submitted data are uploaded files (@xabbuh)
  • security #24992 Namespace generated CSRF tokens depending of the current scheme (@dunglas)
  • bug #24975 [DomCrawler] Type fix Crawler:: discoverNamespace() (@VolCh)
  • bug #24954 [DI] Fix dumping with custom base class (@nicolas-grekas)
  • bug #24952 [HttpFoundation] Fix session-related BC break (@nicolas-grekas, @sroze)
  • bug #24943 [FrameworkBundle] Wire the translation.reader service instead of deprecated translation.loader in commands (@ogizanagi)

Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

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.


I have a problem with the DotEnv component, because in the docs it is written, that the DotEnv should not be used in production and the environment variables should be set as 'real' variables (as written in 12 factor app manifesto). Which is kind of great, if you're using Docker and some orchestration above it, but our company still needs to make the transition and until then, we need to deploy Symfony apps in virtual machines. What should be considered as best practise with deploy in such an environment?
@Martin Fris you can either create real environment variables in your context (export MY_VAR=...) or simply use parameters.yml as usual. Using parameters.yml is perfectly fine, it's just not easy to use in the context of Docker or other tools like these.
Can `RC1 version` now be used in the production environment?

I use this command to get an error:

`composer create-project symfony/skeleton my-project 4.0.0-RC1`

Could not find package symfony/skeleton with version 4.0.0-RC1.
@wenmingtang you can try :
composer create-project "symfony/skeleton:4.0.0-RC1" myproject
You need PHP > 7.1
@Nicolas Pion yup, I can execute the command now.
Because the RC-1 version is released.
Login with SensioLabsConnect to post a comment