一、CentOS 8 系统准备
在开始安装PHP 7.4之前,首先需要确保CentOS 8系统已更新到最新状态。执行以下命令更新系统并安装必要的工具包:
# 切换到root用户
sudo su -
# 更新系统包
dnf update -y
# 安装常用工具
dnf install -y wget curl vim git epel-release
注意事项:
- 如果系统已安装其他版本的PHP,建议先卸载以避免冲突
- 确保系统有足够的磁盘空间(至少2GB可用空间)
- 建议关闭SELinux以提高兼容性:
setenforce 0并编辑/etc/selinux/config将SELINUX=enforcing改为SELINUX=disabled
二、方法一:使用Remi仓库安装PHP 7.4(推荐)
2.1 添加EPEL和Remi仓库
CentOS 8默认仓库中的PHP版本较旧,需要通过第三方仓库获取PHP 7.4:
# 安装EPEL仓库
dnf install epel-release -y
# 安装Remi仓库
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
# 安装dnf工具
dnf install dnf-utils -y
2.2 启用PHP 7.4模块
# 重置PHP模块
dnf module reset php -y
# 启用PHP 7.4模块
dnf module enable php:remi-7.4 -y
2.3 安装PHP 7.4及常用扩展
# 安装PHP核心包
dnf install php php-cli php-common php-fpm -y
# 安装常用扩展
dnf install php-mysqlnd php-gd php-mbstring php-xml php-opcache php-curl php-zip php-json php-bcmath -y
2.4 验证安装
# 查看PHP版本
php -v
# 查看已安装的扩展
php -m
如果显示类似 PHP 7.4.x (cli)的输出,说明安装成功。
2.5 启动PHP-FPM服务
# 启动服务
systemctl start php-fpm
# 设置开机自启
systemctl enable php-fpm
# 查看服务状态
systemctl status php-fpm
三、方法二:使用SCL(Software Collections)安装PHP 7.4
3.1 安装SCL工具
# 安装SCL工具
dnf install centos-release-scl -y
# 安装PHP 7.4 SCL包
dnf install rh-php74 -y
3.2 启用PHP 7.4环境
# 启用PHP 7.4环境
scl enable rh-php74 bash
# 验证版本
php -v
3.3 安装扩展
# 安装常用扩展
dnf install rh-php74-php-mysqlnd rh-php74-php-gd rh-php74-php-mbstring rh-php74-php-xml rh-php74-php-opcache -y
3.4 配置环境变量(可选)
为了让PHP 7.4在系统启动时自动启用,可以编辑环境变量:
# 编辑bash配置文件
vim ~/.bashrc
# 添加以下内容
source scl_source enable rh-php74
# 使配置生效
source ~/.bashrc
四、方法三:源码编译安装PHP 7.4
4.1 安装编译依赖
# 安装开发工具组
dnf groupinstall "Development Tools" -y
# 安装依赖库
dnf install libxml2-devel openssl-devel bzip2-devel libjpeg-devel libpng-devel libwebp-devel libXpm-devel freetype-devel oniguruma-devel libzip-devel sqlite-devel -y
4.2 下载PHP源码
# 创建源码目录
mkdir -p /usr/local/src
cd /usr/local/src
# 下载PHP 7.4源码
wget https://www.php.net/distributions/php-7.4.33.tar.gz
# 解压源码
tar -zxvf php-7.4.33.tar.gz
cd php-7.4.33
4.3 配置编译参数
# 配置编译选项
./configure --prefix=/usr/local/php74 \
--with-config-file-path=/usr/local/php74/etc \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg \
--with-png \
--with-webp \
--with-xpm \
--with-freetype \
--with-bz2 \
--with-libzip \
--with-onig \
--enable-mbstring \
--enable-sockets \
--enable-opcache \
--enable-zip \
--with-pear
4.4 编译并安装
# 编译(根据CPU核心数调整,4核示例)
make -j4
# 安装
make install
4.5 配置PHP
# 复制配置文件
cp php.ini-production /usr/local/php74/etc/php.ini
cp sapi/fpm/php-fpm.conf /usr/local/php74/etc/
cp sapi/fpm/www.conf /usr/local/php74/etc/php-fpm.d/
# 创建软链接
ln -s /usr/local/php74/bin/php /usr/bin/php74
ln -s /usr/local/php74/bin/phpize /usr/bin/phpize74
ln -s /usr/local/php74/bin/php-config /usr/bin/php-config74
4.6 配置PHP-FPM服务
# 复制服务文件
cp sapi/fpm/php-fpm.service /etc/systemd/system/php74-fpm.service
# 启动服务
systemctl start php74-fpm
systemctl enable php74-fpm
五、三种安装方法对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| Remi仓库 | 安装简单、依赖自动解决、易于管理 | 版本更新受仓库维护影响 | 生产环境、快速部署 |
| SCL | 多版本共存、易于切换 | 需要手动管理环境变量 | 开发环境、测试多版本 |
| 源码编译 | 高度定制化、性能优化 | 安装复杂、依赖手动解决 | 特殊需求、性能优化 |
六、删除PHP 7.4的三种方法
6.1 方法一:删除Remi仓库安装的PHP
# 查看已安装的PHP包
rpm -qa | grep php
# 卸载PHP及相关包
dnf remove php php-cli php-common php-fpm php-mysqlnd php-gd php-mbstring php-xml php-opcache php-curl php-zip php-json php-bcmath -y
# 删除配置文件
rm -rf /etc/php*
rm -rf /var/lib/php
rm -rf /var/log/php*
# 清理残留包
dnf autoremove -y
dnf clean all
# 验证删除
php -v
6.2 方法二:删除SCL安装的PHP
# 查看已安装的SCL包
dnf list installed | grep rh-php74
# 卸载PHP SCL包
dnf remove rh-php74 rh-php74-php-mysqlnd rh-php74-php-gd rh-php74-php-mbstring rh-php74-php-xml rh-php74-php-opcache -y
# 删除SCL配置
rm -rf /opt/rh/rh-php74
rm -rf /etc/opt/rh/rh-php74
# 清理环境变量
sed -i '/rh-php74/d' ~/.bashrc
sed -i '/rh-php74/d' /etc/profile.d/scl.sh
# 重新加载配置
source ~/.bashrc
source /etc/profile
# 验证删除
php -v
6.3 方法三:删除源码编译安装的PHP
# 停止PHP-FPM服务
systemctl stop php74-fpm
systemctl disable php74-fpm
# 删除服务文件
rm -f /etc/systemd/system/php74-fpm.service
# 删除安装目录
rm -rf /usr/local/php74
# 删除软链接
rm -f /usr/bin/php74
rm -f /usr/bin/phpize74
rm -f /usr/bin/php-config74
# 删除源码目录
rm -rf /usr/local/src/php-7.4.33
# 清理环境变量
sed -i '/php74/d' ~/.bashrc
sed -i '/php74/d' /etc/profile
# 重新加载配置
source ~/.bashrc
source /etc/profile
# 验证删除
which php74
七、常见问题与解决方案
7.1 PHP-FPM启动失败
问题:systemctl status php-fpm显示失败
解决方案:
# 检查配置文件语法
php-fpm -t
# 查看错误日志
tail -f /var/log/php-fpm/error.log
# 常见错误:端口冲突
netstat -tlnp | grep 9000
# 如果端口被占用,修改 /etc/php-fpm.d/www.conf 中的 listen 参数
7.2 扩展未加载
问题:php -m不显示已安装的扩展
解决方案:
# 查看扩展配置文件
ls /etc/php.d/
# 检查扩展是否启用
php --ini
# 手动创建扩展配置
echo "extension=gd.so" > /etc/php.d/gd.ini
systemctl restart php-fpm
7.3 内存限制问题
问题:PHP脚本执行时提示内存不足
解决方案:
# 编辑php.ini
vim /etc/php.ini
# 修改内存限制
memory_limit = 256M
# 重启PHP-FPM
systemctl restart php-fpm
八、性能优化建议
8.1 PHP-FPM配置优化
编辑 /etc/php-fpm.d/www.conf:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
8.2 OPcache配置优化
编辑 /etc/php.d/opcache.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
8.3 PHP配置优化
编辑 /etc/php.ini:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300
max_input_vars = 3000
九、安全加固
9.1 禁用危险函数
编辑 /etc/php.ini:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
9.2 文件权限设置
# 设置PHP文件权限
chown -R nginx:nginx /var/www/html
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
# 设置session目录权限
chown -R nginx:nginx /var/lib/php/session
chmod 755 /var/lib/php/session
9.3 隐藏PHP版本信息
编辑 /etc/php.ini:
expose_php = Off
十、总结
通过本文介绍的三种方法,您可以根据实际需求选择合适的PHP 7.4安装方式。Remi仓库安装适合生产环境快速部署,SCL安装适合开发环境多版本测试,源码编译安装适合特殊定制需求。无论选择哪种方法,都建议在生产环境前进行充分测试,确保系统稳定运行。
关键注意事项:
- 安装前备份重要数据
- 根据实际需求选择安装方法
- 安装后进行性能和安全配置
- 定期更新系统和PHP版本
- 监控系统日志,及时发现并解决问题
通过合理的安装和配置,PHP 7.4可以在CentOS 8上稳定运行,为Web应用提供强大的后端支持。
若内容若侵犯到您的权益,请发送邮件至:platform_service@jienda.com我们将第一时间处理!
所有资源仅限于参考和学习,版权归JienDa作者所有,更多请访问JienDa首页。





