应使用 composer create-project 创建 symfony 项目,而非 require symfony/symfony;web 项目选 website-skeleton,api 项目选 skeleton;装完须验证 php 版本 ≥8.1、app_env=dev、public/index.php 存在且可访问。

直接用 composer create-project,别碰 require symfony/symfony
这是最常踩的坑:以为装个包就等于有了项目。实际上 symfony/symfony 元包从 Symfony 4 起就废弃了,现在强行 composer require symfony/symfony 会导致:
• symfony/http-kernel 和 symfony/framework-bundle 版本不匹配,composer install 直接失败
• 没有 src/、config/、public/index.php,连入口文件都没有
• bin/console 无法执行,报 Class not found: App\Kernel
选对 skeleton:Web 项目用 website-skeleton,API 用 skeleton
两者区别不在“功能多寡”,而在“默认加载哪些包”:
• composer create-project symfony/website-skeleton myapp → 自带 twig-bundle、doctrine-bundle、form、security-bundle,适合传统后台或 CMS 类项目
• composer create-project symfony/skeleton myapi → 只含核心 HTTP 层和命令行支持,无模板、无数据库抽象,适合微服务或 JSON API
• 指定版本时写法是 symfony/website-skeleton:^6.4(不是 ^6.4.0),LTS 版本更稳,别盲目追 7.x(需 PHP ≥ 8.2)
装完立刻验证三件事,否则后续所有报错都难定位
很多人跑 php bin/console server:start 失败,其实问题出在初始化后那五分钟:
• 检查 php -v:Symfony 6.x 强制要求 PHP ≥ 8.1,低于则卡在依赖解析阶段,报 Your requirements could not be resolved
• 打开 .env 确认 APP_ENV=dev:设成 prod 会导致错误静默、缓存不刷新、路由 404 却不提示原因
• 运行 php -S localhost:8000 -t public:这是最干净的验证方式,绕过 CLI 工具链;若报 Failed to open stream: No such file,大概率是 public/index.php 缺失或 autoload.php 路径不对
要不要装 Symfony CLI?看场景,不是必须
symfony new myapp --full 看起来方便,但它本质仍是调用 create-project + 额外脚本,且会引入额外依赖(比如 symfony/cli 二进制)。实际建议:
• 新手起步:用 create-project 更透明,所有行为可见、可控
• 团队协作或需 symfony server:log / symfony console make:* 等增强命令:再装 CLI,安装命令是 curl -sS https://get.symfony.com/cli/installer | bash,然后加进 $PATH
• 注意:CLI 的 server:start 依赖本地 symfony 二进制,而 php -S 不依赖任何额外工具——环境越简单,越容易排除问题
真正卡住人的,从来不是命令敲错,而是把“框架组件”当“可运行项目”,或者忽略 APP_ENV 和 PHP 版本这种基础配置。骨架拉下来只是开始,能不能跑通,取决于你有没有在 cd myapp 后那几秒里,盯住终端输出的真实线索。










