我们的项目后台需要接入laravel-admin 在这里我们选择了固定版本,1.8.11稳定的版本 但是在服务器运行
composer require encore/laravel-admin "1.8.11"
报错了,让我们看看这个错误
这应该强制Composer使用symfony/css-selector的6.x版本和tijsverkoyen/css-to-inline-styles的2.2.x版本,从而解决PHP版本不兼容的问题。
要解决此依赖冲突,需要调整软件包版本以兼容 PHP 8.1。以下是分步解决方案:
解决方法 降级 symfony/css-selector 至兼容版本
锁定 tijsverkoyen/css-to-inline-styles 到支持 Symfony 6 的版本
步骤说明 手动指定兼容版本组合 运行以下命令强制安装兼容版本:
composer require symfony/css-selector:^6.0 tijsverkoyen/css-to-inline-styles:^2.2.2
或通过 composer.json 调整依赖 在 composer.json 的 require 部分添加:
{
"require": {
"symfony/css-selector": "^6.0",
"tijsverkoyen/css-to-inline-styles": "^2.2.2"
}
}
然后更新依赖:
composer update symfony/css-selector tijsverkoyen/css-to-inline-styles --with-dependencies
解释 PHP 版本兼容:Symfony 7+ 需要 PHP 8.2,通过锁定 Symfony 组件到 6.x 系列保持对 PHP 8.1 的支持。
依赖链调整:Laravel 8 允许 tijsverkoyen/css-to-inline-styles 2.2.x,该版本兼容 Symfony 5/6,从而避免版本冲突。
强制版本解析:明确指定版本约束,引导 Composer 选择正确的依赖树。
执行这些步骤后,Composer 将安装兼容的组合,解决依赖冲突。
原本事情到这里应该结束的,但是并没有 让我们看看接下来的报错
原因分析:
carbonphp/carbon-doctrine-types 2.1.0与doctrine/dbal的某些版本存在冲突。
doctrine/dbal旧版本要求PHP 7.x,而我们的环境是PHP 8.1。
doctrine/deprecations版本不兼容导致进一步冲突。
最终解决方案: 允许Composer更新所有依赖: 使用--with-all-dependencies选项让Composer尝试解决版本冲突:
composer update --with-all-dependencies
然后
# 临时允许降级并更新关键包
composer config platform.php 8.1.32
composer require doctrine/dbal:^2.13.9 doctrine/deprecations:^0.5.3 --with-all-dependencies
composer require encore/laravel-admin:1.8.11
本文为谷永庆原创文章,转载无需和我联系,但请注明来自luffy博客http://gyqtt.cn
Recent Comments