一、安装源
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/ 进入对应目录,输入 ll 或 ls 查看目录下的文件,根据报错提示中关键词 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,完成搭建!