使用 composer create-project symfony/skeleton my-project --version=7.2.* 创建 Symfony 7.2 项目,需确保 PHP 8.2+、设置 APP_DEBUG=1、清空并正确授权 var/cache/ 目录。

用 Composer 创建 Symfony 7.2 项目,命令必须带 --version=7.2
不加版本约束,默认会装最新稳定版(比如 7.3),而你明确要 7.2。Composer 的 create-project 命令本身不默认锁定小版本,得手动指定。
常见错误是只写:composer create-project symfony/skeleton my-project,结果装出来是 7.3 或更高,后续发现文档对不上、组件行为不一致,还以为是自己配错了。
- 正确命令:
composer create-project symfony/skeleton my-project --version=7.2.* -
--version=7.2会被解析为^7.2.0,但更稳妥写成7.2.*,避免因 Packagist 元数据解析差异漏掉 7.2.x 的 patch 版本 - 如果本地已全局安装
symfony/cli,别用symfony new—— 它默认拉最新版,且不支持--version指定小版本
Symfony 7.2 要求 PHP 8.2+,低于这个版本会直接失败
报错典型是:Your requirements could not be resolved to an installable set of packages. 或更直白的 PHP version 8.1.x does not satisfy requirement for symfony/framework-bundle ^7.2。
这不是 Composer 配置问题,是硬性依赖。Symfony 7.2 在 composer.json 的 require.php 字段锁死了 ^8.2,连 8.1.99 都不行。
- 检查当前 PHP 版本:
php -v,确认输出以8.2.或8.3.开头 - Mac 用户用 Homebrew:先
brew install php@8.2,再brew link --force php@8.2 - Docker 用户注意基础镜像,
php:8.2-apache可用,php:8.1-apache不行
安装后首次运行前,必须删掉 var/cache/ 并设可写,否则 500 错误无日志
Symfony 7.2 默认启用 APP_ENV=dev,但缓存目录若残留旧项目或权限不对,会静默失败——浏览器只显示空白页或 500,var/log/dev.log 里也看不到有效线索。
这是因为 7.2 加强了缓存初始化时的权限校验,不像早期版本会自动尝试修复。
- 执行:
rm -rf var/cache/*(不要只删子目录,要清空内容) - 确保 Web 服务器用户(如
www-data或当前 shell 用户)对var/cache/有读写权:chmod -R 777 var/cache(开发环境够用;生产环境请改用setfacl) - 启动前先跑一次:
php bin/console cache:clear,它会重建目录结构并验证权限
APP_DEBUG=1 必须在 .env 里显式开启,否则异常页面不显示
很多人以为 dev 环境默认开调试,但在 Symfony 7.2 中,APP_DEBUG 不再从 APP_ENV 自动推导,必须明确定义。漏掉这行,throw new \Exception() 只返回 HTTP 500,没堆栈、没变量、没路由调试栏。
这是 7.2 的行为变更,不是 bug。框架启动流程中,DebugBundle 的加载完全取决于该 env 变量值是否为 1 或 true。
- 打开
.env,确认含这一行:APP_DEBUG=1 - 不要写成
APP_DEBUG=true—— Symfony 内部用filter_var($val, FILTER_VALIDATE_BOOLEAN)解析,"true"会被转成true,但某些 PHP SAPI(如 PHP-FPM)下环境变量可能被截断或转义,1最稳 - 改完记得重启 Web 服务器或 CLI 进程,env 变量不会热加载
.env 和 var/cache/,比查半天配置文件快得多。










