Symfony 3.4

3.4 released 30 November 2017, latest 3.4.49.

Symfony 3.4 reached end of life on 1 November 2021.

What changed

Symfony 3.4 was the final 3.x feature line and was designed as a bridge toward Symfony 4. It retained the established 3.x application model while making it practical to adopt the newer Symfony structure and conventions incrementally. Its ecosystem introduced Symfony Flex workflows, where Composer recipes can install and configure packages, and it supported the simpler service-registration, autowiring, autoconfiguration, environment-variable, and project-layout patterns associated with newer Symfony applications. For applications coming from earlier 3.x releases, the important change was not a forced rewrite: 3.4 allowed teams to remove deprecated APIs and align configuration with the next major version before taking that major-version step.

What staying costs

Symfony 3.4 has reached end of life, so upstream no longer provides fixes for framework defects or security issues in this line. A known issue may therefore require a local patch, a compensating control, or an upgrade rather than a vendor-maintained update. The larger operational risk is dependency and platform drift: current PHP runtimes, Composer packages, testing tools, deployment images, and Symfony bundles increasingly target supported Symfony and PHP versions, making compatible versions harder to select and maintain. Staying also preserves deprecated patterns and legacy configuration that become more expensive to change as the application and its integrations evolve. This can create audit, security-review, and incident-response concerns, especially where the application processes sensitive data or is exposed to the internet.

What to do

First upgrade to the latest available Symfony 3.4 patch level and update Composer dependencies within their declared compatible ranges. Run the application and test suite with deprecation reporting enabled, then inventory and remove deprecations in application code, templates, bundle configuration, event listeners, controllers, and service definitions. Review PHP, database, cache, queue, and web-server requirements for the intended target Symfony line, and identify bundles that have no compatible upgrade path. Move configuration toward modern conventions where feasible, including explicit service configuration, autowiring and autoconfiguration where appropriate, environment-based configuration, and a Flex-compatible project structure. Use a staging environment and production-like test data to validate routing, authentication, sessions, forms, serialization, caching, background workers, and error handling. Plan the framework upgrade as a tested sequence of supported major lines when a direct move is not compatible with the application, keeping each step small enough to isolate behavior and dependency changes. Until migration is complete, reduce exposure with maintained infrastructure, dependency scanning, restrictive access controls, monitoring, backups, and a documented process for applying local mitigations.

We can tell you what moving off Symfony 3.4 involves.

What it takes to move off Symfony 3.4 depends on what you built on it — the version you are on, how much depends on it, and how much of the work is mechanical. Leave your email with this version and we can tell you what that looks like for you.

Not sure yet? Get my plan