Ubuntu 22.04下PHP8.1/8.2共存时安装intl模块遇依赖错误求助
解决PHP模块intl安装依赖冲突问题
问题原因
你的PHP 8.1是从deb.sury.org第三方源安装的版本(8.1.14-1+ubuntu18.04.1+deb.sury.org+1),但系统默认apt源提供的php8.1-intl依赖的是官方版本的php8.1-common(8.1.2-1ubuntu2.10),版本不匹配导致依赖冲突。同时服务器活跃PHP版本是8.2,优先需要针对8.2安装intl模块。
解决方案
方案1:安装PHP 8.2版本的intl模块(优先推荐,因为当前活跃版本是8.2)
- 更新apt源缓存:
apt-get update - 直接安装PHP 8.2的intl模块:
apt-get install php8.2-intl - 如果仍提示依赖问题,先升级PHP 8.2的基础包:
再次执行安装命令即可。apt-get upgrade php8.2-common
方案2:为PHP 8.1安装匹配版本的intl模块(若需要兼容8.1的其他模块)
- 确认deb.sury.org源已正确配置:
检查/etc/apt/sources.list.d/目录下是否存在类似sury-php.list的文件,内容应为:
若不存在,添加该源并导入密钥:deb https://packages.sury.org/php/ bionic mainapt-get install -y apt-transport-https lsb-release ca-certificates curl curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list - 更新源缓存:
apt-get update - 安装PHP 8.1的intl模块:
apt-get install php8.1-intl
方案3:修复系统损坏的依赖包
若以上方案仍报错,先处理系统的broken packages:
- 查看被锁定的包:
dpkg --get-selections | grep hold - 取消锁定的包(替换
<package-name>为实际包名):apt-mark unhold <package-name> - 自动修复依赖:
apt-get -f install - 再次尝试安装intl模块。
内容的提问来源于stack exchange,提问作者Randeep Singh
相关产品推荐
相关产品推荐

