使用Remi仓库(推荐:适合大多数场景)
Remi仓库是CentOS系统管理PHP版本的主流方案,提供最新稳定版PHP及扩展,且与系统包管理器(yum/dnf)深度集成。
sudo yum install epel-release
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager启用所需PHP版本的仓库(如PHP 7.4、8.0)。例如启用PHP 7.4:sudo yum-config-manager --enable remi-php74
sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-mbstring
php -v
若需切换Web服务(如Apache/Nginx)使用的PHP版本,需修改对应服务的PHP-FPM配置(如/etc/opt/remi/php74/php-fpm.conf)并重启服务。使用phpbrew(适合需要灵活切换的场景)
phpbrew是PHP版本管理工具,支持多版本共存与快速切换,适合开发环境。
curl -L -O https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar
chmod +x phpbrew.phar
sudo mv phpbrew.phar /usr/local/bin/phpbrew
~/.bashrc):echo '[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc' >> ~/.bashrc
source ~/.bashrc
+default表示设为默认版本:phpbrew install 7.4 +default
phpbrew install 8.1
switch命令切换全局版本,use命令临时切换当前终端版本:phpbrew switch 8.1 # 全局切换
phpbrew use 7.4 # 当前终端临时切换
php -v查看当前生效版本。源码编译安装(适合定制化需求)
若需完全自定义PHP配置(如启用特定扩展、调整编译参数),可选择源码编译,但过程较复杂。
sudo yum groupinstall "Development Tools"
sudo yum install gcc make libxml2-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libmhash-devel
wget https://www.php.net/distributions/php-7.4.28.tar.gz
tar -zxvf php-7.4.28.tar.gz
cd php-7.4.28
/usr/local/php74),并启用所需扩展(如--enable-mbstring、--with-mysql):./configure --prefix=/usr/local/php74 --enable-mbstring --with-mysql --with-pdo-mysql --with-openssl
make
sudo make install
PATH,方便全局调用:echo 'export PATH=/usr/local/php74/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
php -v确认安装成功。多版本共存配置(Web服务适配)
若需在同一服务器上运行多个PHP版本(如Nginx/Apache),需通过端口隔离或套接字文件区分不同版本的PHP-FPM。
php74-php-fpm、php80-php-fpm):sudo yum install php74-php-fpm php80-php-fpm
listen参数(端口或套接字)。例如,将PHP 7.4的listen改为9001(端口模式)或/run/php-fpm/php74-fpm.sock(套接字模式):sudo vim /etc/opt/remi/php74/php-fpm.d/www.conf
# 修改以下行(约38行)
listen = 127.0.0.1:9001 # 端口模式
# 或
listen = /run/php-fpm/php74-fpm.sock # 套接字模式
fastcgi_pass。例如,Nginx配置PHP 7.4:location ~ \.php$ {
fastcgi_pass 127.0.0.1:9001; # 对应PHP 7.4的端口
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
sudo systemctl restart php74-php-fpm
sudo systemctl restart nginx
若使用套接字模式,需确保套接字文件权限正确(如chmod 666 /run/php-fpm/php74-fpm.sock)。