下载php

# 下载源码
wget https://www.php.net/distributions/php-8.1.5.tar.gz

# 解压
tar -zxf php-8.1.5.tar.gz

# 安装依赖
yum -y install libxml2 libxml2-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel sqlite-devel oniguruma-devel
yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++

# 编译安装
./configure --prefix=/www/server/php/php-8.1.5 --with-config-file-path=/www/server/php/php-8.1.5 --with-config-file-scan-dir=/www/server/php/php-8.1.5/php.d --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --with-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --disable-fileinfo
make && make install

# 复制源码所在文件夹下的php.ini-production 或 php.ini-development
cp php.ini-production /www/server/php/php-8.1.5/etc/php.ini
# 进入安装目录
cd /www/server/php/php-8.1.5/etc
cp php-fpm.conf.default php-fpm.conf
cd /www/server/php/php-8.1.5/etc/php-fpm.d
cp www.conf.default www.conf

# 软连接全局命令(可有可无)
ln -sf /www/server/php/php-8.1.5/sbin/* /usr/local/sbin/
ln -sf /www/server/php/php-8.1.5/bin/* /usr/local/bin/

Package 'XXXX', required by 'virtual:world', not found)

# Package 'libxml-2.0', required by 'virtual:world', not found这样的错误都可以执行yum search libxml2-devel如果有,就是直接安装,没有就只能下载源码安装了
yum install libxml2-devel

# Package 'oniguruma', required by 'virtual:world', not found)分情况 centos8之前都可以用
yum install oniguruma-devel
# centos8暂时就只能源码编译安装
# https://github.com/kkos/oniguruma/releases
wget https://github.com/kkos/oniguruma/releases/download/v6.9.7.1/onig-6.9.7.1.tar.gz
tar -zxf onig-6.9.7.1.tar.gz
cd onig-6.9.7
autoreconf -vfi
./configure --prefix=/usr/local/oniguruma
make && make install

$ vim ~/.bash_profile
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig                        
export PKG_CONFIG_PATH
ln -s /usr/local/oniguruma/lib/pkgconfig/oniguruma.pc /usr/local/lib/pkgconfig/


ln -s /usr/local/openssl/lib64/pkgconfig/libcrypto.pc /usr/local/lib/pkgconfig/
ln -s /usr/local/openssl/lib64/pkgconfig/libssl.pc /usr/local/lib/pkgconfig/
ln -s /usr/local/openssl/lib64/pkgconfig/openssl.pc /usr/local/lib/pkgconfig/

编译配置说明

--prefix=/www/server/php/php-8.1.5		# 配置安装目录
--with-config-file-path=/www/server/php/php-8.1.5 # 配置文件 php.ini 的路径
--enable-sockets 				# 开启 socket 
--enable-fpm 					# 启用 fpm 扩展
--enable-cli			 		# 启用 命令行模式 (从 php 4.3.0 之后这个模块默认开启所以可以不用再加此命令)
--enable-mbstring 				# 启用 mbstring 库
--enable-pcntl 					# 启用 pcntl (仅 CLI / CGI)
--enable-soap 					# 启用 soap 
--enable-opcache 				# 开启 opcache 缓存
--disable-fileinfo 				# 禁用 fileinfo (由于 5.3+ 之后已经不再持续维护了,但默认是开启的,所以还是禁止了吧)(1G以下内存服务器直接关了吧)
--disable-rpath  				# 禁用在搜索路径中传递其他运行库。
--with-mysqli 					# 启用 mysqli 扩展
--with-pdo-mysql 				# 启用 pdo 扩展
--with-iconv-dir 				# 启用 XMLRPC-EPI 字符编码转换 扩展
--with-openssl 					# 启用 openssl 扩展 (需要 openssl openssl-devel)
--with-fpm-user=nginx 			# 设定 fpm 所属的用户 
--with-fpm-group=nginx 			# 设定 fpm 所属的组别
--with-curl 					# 启用 curl 扩展
--with-mhash 					# 开启 mhash 基于离散数学原理的不可逆向的php加密方式扩展库
# GD
----enable-gd					# 启用 GD 图片操作 扩展
--with-jpeg-dir 				# 开启对 jpeg 图片的支持 (需要 libjpeg)
--with-png-dir 					# 开启对 png 图片支持 (需要 libpng)
--with-freetype-dir 			# 开启 freetype 从 PHP 7.4.0 开始使用 --with-freetype 代替,它依赖于 pkg-config。
# 压缩 从 PHP 7.4.0 开始,必须在编译 PHP 时用 --with-zip 配置选项来提供 zip 支持。之前的 PHP 版本,需要使用 --enable-zip 选项
--enable-zip 					# 启用 zip
--with-zlib 					# 启用对 zlib 支持 
# xml
--enable-simplexml 				# 启用对 simplexml 支持
--with-libxml-dir 				# 启用对 libxml2 支持
--enable-debug 					# 开启 debug 模式