一、安装源

rpm -ivh --nodeps https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sed -i 's/PLATFORM_ID="platform:al8"/PLATFORM_ID="platform:el8"/g' /etc/os-release
## 安装 PHP8.1 
sed -i 's/PLATFORM_ID="platform:el8"/PLATFORM_ID="platform:al8"/g' /etc/os-release

二、安装 PHP8.1

yum install -y php81-php-fpm php81-php-cli php81-php-bcmath php81-php-gd php81-php-json php81-php-mbstring php81-php-mcrypt php81-php-mysqlnd php81-php-opcache php81-php-pdo php81-php-pecl-crypto php81-php-pecl-mcrypt php81-php-pecl-geoip php81-php-recode php81-php-snmp php81-php-soap php81-php-xml php81-php-pecl-redis php81-php-pecl-apcu php81-php-pecl-apcu-devel

sed -i 's/PLATFORM_ID="platform:el8"/PLATFORM_ID="platform:al8"/g' /etc/os-release

 

三、启动 php-fpm

[root@php ~]# systemctl start php81-php-fpm
[root@php ~]# systemctl enable php81-php-fpm

 

Error: Failed to download metadata for repo ‘remi-modular‘: Cannot prepare internal mirrorlist: Stat

 

 

在云服务器上安装PHP时报错

Errors during downloading metadata for repository 'remi-modular':

-Status code: 403 for http://cdn.remirepo.net/enterprise/3/modular/x86_64/mirror (IP: 109.238.14.107)

Error: Failed to download metadata for repo 'remi-modular': Cannot prepare internal mirrorlist: Status code: 403 for http://cdn.remirepo.net/enterprise/3/modular/x86_64/mirror (IP: 109.238.14.107)

这个报错提示从名为'remi-modular'的软件仓库下载元数据时失败了。通常发生在使用基于RPM的Linux发行版(如CentOS、Fedora、RHEL等),当系统无法连接到或读取指定的软件仓库时。

无法连接到软件仓库,那么第一步先检查网络连接

这里我使用 Curl 命令(Curl是一个常用的网络工具,可以进行HTTP请求并查看响应结果。服务器可以使用Curl发送HTTP请求并检查是否能够成功访问外部网站。)

输入 curl https://www.baidu.com/  后执行,返回了百度的首页,说明网络没问题。

网络没问题,那么就检查软件仓库是否正常:

访问仓库,没问题,

既然网络没问题,仓库也没问题,那为什么会403呢?

经过各种资料查阅后,怀疑第三方DNF(YUM)源有问题,而我的服务器的操作系统又用的是Alibaba Cloud Linux 3,所以我查阅到阿里云文档,发现了类似的问题:

文章说问题原因是:第三方DNF源仅适配CentOS 8发行版,而在Alibaba Cloud Linux 3中,系统的$releasever变量值与CentOS 8不同,导致DNF解析后的地址无效,进而导致下载RPM包失败。

原因确认了,接着就可以根据原因来解决问题了

1.执行命令 cd /etc/yum.repos.d/ 进入对应目录,输入 llls 查看目录下的文件,根据报错提示中关键词 remi-modular ,找到对应的 remi-modular.repo 文件。

(注:remi-safe.repo不改后续也会报错,所以一起改了)

2.输入 vim remi-modular.repo 打开文件

i 键进入编辑模式,找到文件中存在enabled=1值的源,将源中的$releasever变量替换为8

按下 Esc 键后,输入 :wq 并按 Enter 键以保存关闭配置文件。

remi-safe.repo文件同理修改。

修改完后重新安装PHP,本以为可以了,结果还是报了另一个错:

Curl error (37): Couldn't read a file:// file for file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi.el3 [Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-remi.el3]

The downloaded packages were saved in cache until the next successful transaction.

You can remove cached packages by executing 'yum clean packages'.

俗话说:“万事开头难”,确实如此,做开发的在第一步搭建开发环境时总会遇到各种各样的问题,非常消耗人的耐心,但是还是要平心静气面对问题解决问题,不能早早放弃。

仔细看报错提示,提示说找不到文件,那根据提示到对应的目录下看看到底有没有:

确实没有RPM-GPG-KEY-remi.el3,但是有两个相似的文件RPM-GPG-KEY-remi.e18和RPM-GPG-KEY-remi.e19,根据前面的经验,稍稍推测即可猜出,肯定是和前一个问题一样的原因,正确的文件后缀应该是8而不是3,所以还是回到 /etc/yum.repos.d/ 目录下,将对应文件(remi-modular.repo,remi-safe.repo等)里的$releasever

手动更改为8后保存退出。

接着继续安装PHP

成功!

访问下安装好的php,

没问题,ok,完成搭建!

Alibaba Cloud Linux 3 yum 安装 PHP8.1
标签: