最稳妥方式是运行 composer create-project symfony/skeleton my_project,它创建最小化骨架项目,启动快、依赖干净;避免使用已废弃的 symfony new 命令。

用 composer create-project 初始化 Symfony 项目最稳妥
直接运行 composer create-project symfony/skeleton my_project 是当前官方推荐方式,它拉取的是最小化骨架(skeleton),不含冗余组件,启动快、依赖干净。别用 symfony new 命令——那是 Symfony CLI 工具的指令,而 CLI 已在 Symfony 6.2+ 被标记为废弃,且不随 Composer 自动安装。
常见错误现象:command not found: symfony 或创建后 bin/console 报错找不到 Symfony\Component\Console\Application,基本都是误用了 CLI 或混用了旧版教程。
- 确保已安装 PHP 8.1+ 和 Composer 2.5+
-
my_project目录必须不存在,否则命令会失败(不会覆盖) - 想带 Web 功能(如控制器、模板、Web Server),后续再执行
composer require webapp - 若需 Doctrine 或 Twig 等,等项目初始化完成后再按需
composer require,避免初始依赖爆炸
安装时遇到 Could not find package symfony/skeleton
这通常不是包不存在,而是 Composer 配置或网络问题。symfony/skeleton 在 Packagist 上始终可用,但默认可能被国内镜像源拦截或缓存过期。
- 先运行
composer clear-cache清掉本地缓存 - 临时切回官方源:
composer config -g repo.packagist composer https://packagist.org - 检查是否误加了
--stability=stable之类参数——skeleton 默认就是 stable,加了反而可能过滤掉兼容版本 - PHP 版本太低(如 7.4)也会触发此报错,因为 skeleton 6.x 要求 PHP 8.0+
composer require 加组件前先看 composer.json 的 "type" 和 "minimum-stability"
新项目默认 "type": "project",这会影响某些包(比如 symfony/ux-* )的安装行为;而 "minimum-stability": "stable" 会阻止 dev 版本包自动引入——但 Symfony 官方很多 UX 组件(如 symfony/ux-turbo)目前只有 dev-main 可用。
- 装 UX 类组件时,显式指定版本:
composer require symfony/ux-turbo:dev-main - 如果要全局放宽稳定性,改
composer.json中"minimum-stability"为"dev",但上线前务必改回"stable" - 不要手动修改
"type"为"library"——这会让bin/console启动失败,因 Symfony 的 autoloading 逻辑依赖project类型
Windows 下运行 php bin/console 报错 Class 'App\Kernel' not found
这不是代码问题,是 Composer 自动加载未生效,常见于 Windows + WSL 混用、路径大小写或权限残留场景。
- 删掉
vendor/和var/cache/,再跑一次composer install - 确认
APP_ENV环境变量没被系统级设置干扰(比如 PowerShell 里设过全局$env:APP_ENV="prod") - 用
php -c php.ini bin/console显式指定配置,排除 php.ini 加载异常 - 若用 Git Bash,避免路径含空格或中文——
cd到项目根目录后,用pwd -W看 Windows 路径是否被转义错
实际部署时,composer install --no-dev 是必须的,但很多人忘了 APP_ENV=prod 必须在安装前就设好,否则缓存生成逻辑不同,上线后第一次请求会卡住编译。这个点不在安装阶段暴露,但会在生产环境首次访问时突然崩掉。










