官方唯一推荐的初始化方式是 composer create-project,它生成完整项目骨架(含 bin/console、public/index.php 等),而 symfony new 和 composer require symfony/symfony 均已废弃或失效。

直接用 composer create-project,别碰 symfony new 或 composer require symfony/symfony
官方唯一靠谱的初始化方式就是 composer create-project,它拉的是完整项目骨架(含 bin/console、public/index.php、.env、自动加载配置),不是零散包。其他方式基本都踩坑:
-
symfony new命令来自已废弃的 Symfony CLI 工具(6.2+ 被标记为 deprecated),不随 Composer 安装,运行就报command not found: symfony -
composer require symfony/symfony这个元包自 Symfony 4 起就没了,现在强行装会触发依赖冲突,且根本没src/、没路由、没内核类——php bin/console直接报Class 'App\Kernel' not found - 手动写
composer.json再require组件?大概率漏掉symfony/runtime或symfony/flex,导致 Flex recipes 不执行,cache:clear报错说找不到config/packages/framework.yaml
symfony/skeleton 和 symfony/website-skeleton 怎么选
两者都基于 Flex,区别在预装组件和默认能力,不是“高级版 vs 简易版”,而是“API 场景 vs Web 页面场景”:
-
composer create-project symfony/skeleton myapp:最小骨架,无 Twig、无 Doctrine、无 WebServerBundle,适合 API、CLI 工具或微服务。启动快,vendor/干净 -
composer create-project symfony/website-skeleton myweb:带twig-bundle、web-profiler-bundle、asset-mapper和基础构建支持,开箱即用传统 Web 页面。但注意:web-server-bundle已弃用,开发时推荐php -S localhost:8000 -t public或单独装symfony-cli后用symfony server:start - 想一步到位又怕版本漂移?加
--version=6.4.*或--version=7.2.*。不加的话,latest可能指向 alpha/beta,比如你想要 7.2 LTS 却装了 7.3,后续行为对不上文档
安装后三件不能跳的事:composer install、检查 .env、清缓存
跑完 create-project 只是第一步,Flex 的 recipe 注入、自动加载注册、目录权限初始化全靠接下来这几步,跳过就等着报错:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须再跑一次
composer install:即使create-project自动执行过,也要手动再跑。它会触发 Flex 安装 recipes(比如生成config/packages/twig.yaml),并确保vendor/autoload.php正确生成 - 立刻打开
.env,确认APP_ENV=dev(开发环境)或APP_ENV=prod(上线前)。设成prod却没清缓存?cache:clear会失败并提示Unable to write in the cache directory - 首次运行前必做
php bin/console cache:clear:尤其在 Docker、WSL 或 Windows 下,var/cache目录可能权限不对或属主错误,不清理就访问http://localhost:8000会卡在 500 错误
遇到 Could not find package symfony/skeleton 怎么办
这个报错几乎从不因为包真不存在——symfony/skeleton 在 Packagist 上一直稳定存在。问题通常出在本地 Composer 配置或环境限制:
- 先清缓存:
composer clear-cache。国内镜像源有时缓存过期或拦截了新版本元数据 - 临时切回官方源:
composer config -g repo.packagist composer https://packagist.org,排除镜像干扰 - 检查是否误加了
--stability=stable:skeleton 默认就是 stable,加了反而可能过滤掉兼容的 PHP 版本适配版 - 确认 PHP 版本够高:Symfony 6.x 要求 PHP ≥ 8.1,7.x 要求 ≥ 8.2。PHP 7.4 下运行
create-project就会报这个错,而不是明确提示版本不足 - 别改
composer.json里的"type": "library"——这是常见手贱操作,会导致bin/console启动失败,因 Symfony 的 autoloading 强依赖"type": "project"
真正麻烦的从来不是命令敲错,而是 PHP 扩展没开(比如缺 mbstring)、.env 没生效、或者以为装完就能跑,结果连 public/index.php 都被删了还去找框架 bug。

















