企业级 Symfony 应用应使用 composer create-project symfony/skeleton:^6.4 my-app --stability=stable --no-interaction 安装 LTS 版本,立即移除 SensioFrameworkExtraBundle 和 WebProfilerBundle,禁用开发路由,改用 Nginx+PHP-FPM 并关闭调试模式。

直接用 composer create-project 装 Symfony,不是最稳妥的企业级起步方式——它默认生成开发环境配置,且版本、结构、安全补丁都得手动对齐。真要搭企业级应用,得从约束起点开始。
用 create-project 时必须指定稳定版和最小稳定性
Symfony 官方推荐的长期支持(LTS)版本才是企业首选,比如 6.4 或 7.0(截至 2024 年中)。不加约束的话,composer create-project symfony/skeleton 可能拉下 dev-main 或预发布版,导致后续依赖冲突或安全策略失效。
- 装 LTS 版本:运行
composer create-project symfony/skeleton:^6.4 my-app --stability=stable --no-interaction
- 强制跳过交互式提问,避免 CI/CD 流水线卡住
-
--stability=stable防止 Composer 自动降级到RC或beta包
安装后立刻禁用开发专用 Bundle 和路由
默认骨架含 SensioFrameworkExtraBundle 和 WebProfilerBundle,前者已废弃,后者只该在 dev 环境启用。生产环境残留它们会暴露调试接口、拖慢响应、引入非必要攻击面。
- 删掉
config/bundles.php中这行:Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], - 确认
config/packages/prod/web_profiler.yaml不存在;如果存在,直接删掉 - 检查
config/routes/dev/目录是否为空,非空则清空——生产镜像构建时不应包含任何/_profiler或/_wdt路由
替换默认 Web Server 为正式部署就绪配置
symfony server:start 是开发玩具,不支持 HTTPS 终止、请求限流、真实日志轮转。企业级必须切到 Nginx + PHP-FPM 组合,并显式禁用 .env 文件热加载。
ECTouch是上海商创网络科技有限公司推出的一套基于 PHP 和 MySQL 数据库构建的开源且易于使用的移动商城网店系统!应用于各种服务器平台的高效、快速和易于管理的网店解决方案,采用稳定的MVC框架开发,完美对接ecshop系统与模板堂众多模板,为中小企业提供最佳的移动电商解决方案。ECTouch程序源代码完全无加密。安装时只需将已集成的文件夹放进指定位置,通过浏览器访问一键安装,无需对已有
立即学习“PHP免费学习笔记(深入)”;
- 把
.env中的APP_ENV=dev改成APP_ENV=prod,再运行php bin/console cache:warmup --env=prod
- Nginx 配置里禁止访问
/var、/config、/src目录,只允许入口点/public/index.php - 在
public/index.php顶部加一行:putenv('APP_DEBUG=0');,确保即使 .env 被意外覆盖也不会开启调试模式
真正麻烦的从来不是“怎么装”,而是“装完之后哪些默认开关没关掉”。Symfony 的灵活性恰恰藏在这些默认开启的开发便利里——企业环境里,便利往往就是漏洞的温床。










