无法在Debian Stretch上安装PHP 7.1的问题求助
先还原你遇到的错误场景:
root@67a59862eeed:/var/www# apt install php7.1-apcu php7.1-bcmath php7.1-cli php7.1-curl php7.1-fpm php7.1-gd php7.1-intl php7.1-mcrypt php7.1-mysql php7.1-soap php7.1-xml php7.1-zip
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'php-apcu' instead of 'php7.1-apcu'
php7.1-gd is already the newest version (7.1.16-1+ubuntu18.04.1+deb.sury.org+1).
php7.1-mysql is already t...
问题分析
- 你应该是添加了第三方的deb.sury.org源来获取PHP7.1(毕竟Debian Stretch默认源只有PHP7.0),但这个源里部分扩展的命名做了调整,比如
php7.1-apcu已经被统一命名为php-apcu,所以apt会自动提示你替换包名。 - 版本号里出现的
ubuntu18.04.1是个关键问题——你用的是Debian Stretch,却配置了Ubuntu Bionic的源,这很容易导致依赖冲突或者包找不到的问题,大概率是后续错误的根源。
解决步骤
第一步:修正源配置
打开/etc/apt/sources.list.d/目录下的sury源配置文件(比如sury-php.list),确保内容是针对Debian Stretch的:deb https://packages.sury.org/php/ stretch main删掉任何包含
ubuntu18.04或者bionic的源条目,避免混淆。第二步:更新本地包缓存
执行命令刷新源信息,确保本地包列表和远端源同步:apt update第三步:调整安装命令重新安装
根据apt的提示,把php7.1-apcu替换成php-apcu,完整命令如下:apt install php-apcu php7.1-bcmath php7.1-cli php7.1-curl php7.1-fpm php7.1-gd php7.1-intl php7.1-mcrypt php7.1-mysql php7.1-soap php7.1-xml php7.1-zip
如果执行过程中还是有依赖报错,可以尝试先修复依赖:
apt install -f
之后再重新执行安装命令即可。
内容的提问来源于stack exchange,提问作者wawanopoulos

