PHP 版本须 ≥ 8.1,Composer 安装 Symfony 6+ 时 CLI 环境需启用 allow-plugins、ext-intl 和 ext-xml,并确保 var/cache 与 var/log 写入权限正确。

PHP 版本必须 ≥ 8.1,低于这个会直接报错
Symfony 6.x 及以上版本已放弃对 PHP 7.x 的支持,composer create-project 运行时若检测到 PHP 8.0 或更低,会抛出 requirement not satisfied 错误并中断安装。Mac 用户用 Homebrew 安装的默认 PHP 常是 8.0,Windows 用户通过 XAMPP/WAMP 启动的也大概率是旧版。
- 运行
php -v确认版本,不是看 phpinfo() 页面——命令行环境和 Web 环境的 PHP 可能不同 - Mac 上推荐用
brew install php(自动装最新稳定版),装完记得检查which php是否指向新路径 - Windows 用户建议直接下载 官方线程安全(TS)VC17 x64 ZIP 包,解压后把路径加进系统
PATH,再删掉旧的 Apache 模块式 PHP - 别依赖
php --ini显示的配置路径来改php.ini—— Composer 走的是 CLI SAPI,要改 CLI 对应的那个php.ini,不是 Apache 或 Nginx 下的
Composer 必须启用 allow-plugins,否则 create-project 卡在“loading plugin”
Composer 2.2+ 默认禁用插件自动加载,而 Symfony 安装器依赖 symfony/flex 插件完成骨架初始化。不手动放行,命令会卡住几秒后报错:The package "symfony/flex" is a plugin, but plugins are disabled.
- 全局启用:运行
composer config -g allow-plugins true - 项目级启用(不推荐):在项目目录下执行
composer config allow-plugins true,但新建项目前还没目录,所以得先全局设 - 如果之前设过
false或[],用composer config -g --unset allow-plugins清掉再重设 - 某些公司镜像源会拦截插件下载,换回官方源:
composer config -g repo.packagist composer https://packagist.org
ext-intl 和 ext-xml 缺一不可,Apache 模块里开着也不代表 CLI 可用
Symfony 控制台命令、缓存生成、YAML 解析全依赖这两个扩展。常见现象是 bin/console cache:clear 报 Class 'IntlDateFormatter' not found,或 composer install 提示 ext-xml missing,即使 phpinfo() 页面显示已启用。
- CLI 模式下验证:运行
php -m | grep -E 'intl|xml',没输出就说明 CLI PHP 没加载对应 .so/.dll - Linux/macOS:确认
php.ini里有extension=intl和extension=xml(注意不是extension=dom或extension=simplexml单独一行) - Windows:检查
php.ini中extension=php_intl.dll和extension=php_xml.dll是否取消注释,且 DLL 文件真实存在于ext/目录下 - Ubuntu/Debian 用户常漏装
php-intl和php-xml包,光装php主包不够,需额外apt install php-intl php-xml
写入权限问题集中在 var/cache 和 var/log,别急着给整个 var/ 777
开发环境首次运行 bin/console cache:clear 失败,十有八九是用户权限不对。错误信息通常是 file_put_contents(var/cache/dev/App_KernelDevDebugContainer.php): failed to open stream: Permission denied。直接 chmod -R 777 var/ 看似快,但会埋下安全和 Git 跟踪混乱的坑。
立即学习“PHP免费学习笔记(深入)”;
- 推荐方案:让 Web 服务器用户(如
www-data)和当前终端用户同属一个组,比如sudo usermod -a -G www-data $USER,再设var/为g+rw并开启 setgid:chmod -R g+rw var/ && chmod g+s var/ - Mac M1 用户注意:Docker Desktop for Mac 默认挂载卷权限是 root,本地开发尽量别在容器里跑
cache:clear,改用主机 CLI 执行 - Windows WSL 用户若用 Windows 文件系统路径(
/mnt/c/...)存项目,NTFS 权限映射不可靠,务必把项目移到 WSL 的原生路径下(如~/projects/)











