前提条件
- Rocky Linux 8 或更高版本
- root 权限或 sudo 权限
- 已配置好的 Web 服务器(Apache 或 Nginx)
- 可用的互联网连接
安装 PHP
1. 添加 EPEL 和 REMI 源
sudo dnf install epel-release -y # 安装 EPEL 源
sudo dnf -y install https://mirrors.aliyun.com/remi/enterprise/remi-release-8.rpm # 安装 REMI 源
2. 启用 PHP 8.4 版本源
sudo dnf install dnf-utils -y # 安装 dnf-utils
sudo dnf config-manager --enable remi-php84 # 启用 PHP 8.4 版本源(可根据需要选择其他版本)
3. 安装PHP及常用扩展
sudo dnf -y install php84 php84-php-fpm php84-php-gd php84-php-mbstring php84-php-mysqlnd php84-php-xml php84-php-opcache php84-php-pecl-zip php84-php-bcmath php84-php-sodium # 安装 PHP 8.4 基础包和常用扩展
sudo ln -s /opt/remi/php84/root/usr/bin/php /usr/bin/php # 创建php命令的软链接
sudo ln -s /opt/remi/php84/root/usr/bin/php /usr/bin/php84 # 创建php84命令的软链接
sudo ln -s /opt/remi/php84/root/usr/sbin/php-fpm /usr/sbin/php84-php-fpm # 创建php84-php-fpm命令的软链接
# 验证软链接是否创建成功
sudo ls -l /usr/bin/php /usr/bin/php84
sudo php -v # 查看PHP版本
4. 安装其他版本的 PHP
sudo dnf config-manager --enable remi-php83 # 启用 PHP 8.3 版本源
sudo dnf -y install php83 php83-php-fpm php83-php-gd php83-php-mbstring php83-php-mysqlnd php83-php-xml php83-php-opcache php83-php-pecl-zip php83-php-bcmath php83-php-sodium # 安装 PHP 8.3 基础包和常用扩展
sudo ln -s /opt/remi/php83/root/usr/bin/php /usr/bin/php83 # 创建php83命令的软链接
sudo ln -s /opt/remi/php83/root/usr/sbin/php-fpm /usr/sbin/php83-php-fpm # 创建php83-php-fpm命令的软链接
sudo ls -l /usr/bin/php /usr/bin/php83 /usr/sbin/php83-php-fpm # 验证软链接是否创建成功
sudo php83 -v # 查看PHP版本
注意
- 安装其他版本 PHP 时,需要先启用对应版本的源
- 启动 PHP-FPM 服务前,需要修改对应 PHP-FPM 配置文件的监听端口,比如这里将
/etc/opt/remi/php83/php-fpm.d/www.conf
文件中listen
的值配置为127.0.0.1:9001
。
PHP 配置优化
; /etc/opt/remi/php84/php.ini
cgi.fix_pathinfo=0 ; 禁用 pathinfo
memory_limit = 256M ; 设置最大内存限制
max_execution_time = 300 ; 设置最大执行时间
max_input_time = 300 ; 设置最大执行时间
; /etc/opt/remi/php84/php.ini
file_uploads = On ; 允许上传文件
upload_max_filesize = 64M ; 设置最大上传文件大小
post_max_size = 64M ; 设置最大上传文件大小
; /etc/opt/remi/php84/php.ini
disable_functions = exec,passthru,shell_exec,system,proc_open,popen ; 禁用危险函数
expose_php = Off ; 隐藏PHP版本信息
; 禁用远程文件包含
allow_url_fopen = Off
allow_url_include = Off
; /etc/opt/remi/php84/php.d/10-opcache.ini
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=5
注意
disable_functions
配置的禁用危险函数会影响 PHP 对系统函数的调用。
PHP-FPM配置
1. 主要配置文件位置
- PHP主配置文件:
/etc/opt/remi/php84/php.ini
- PHP-FPM配置目录:
/etc/opt/remi/php84/php-fpm.d/
- PHP-FPM主配置文件:
/etc/opt/remi/php84/php-fpm.conf
2. 配置PHP-FPM
sudo vim /etc/opt/remi/php84/php-fpm.d/www.conf # 编辑 www.conf
基础配置示例:
[www]
user = nginx ; 指定用户
group = nginx ; 指定组
listen = 127.0.0.1:9000 ; 安装多版本PHP时,需要修改监听端口
listen.owner = nginx ; 指定用户
listen.group = nginx ; 指定组
listen.mode = 0660 ; 指定权限
env[HOSTNAME] = $HOSTNAME ; 指定主机名
env[PATH] = /usr/local/bin:/usr/bin:/bin ; 指定PATH路径
env[TMP] = /tmp ; 指定临时目录
env[TMPDIR] = /tmp ; 指定临时目录
env[TEMP] = /tmp ; 指定临时目录
3. 管理 PHP-FPM 服务
sudo systemctl start php84-php-fpm # 启动 PHP-FPM
sudo systemctl enable php84-php-fpm # 设置开机自启
sudo systemctl status php84-php-fpm # 查看状态
卸载 PHP
sudo systemctl stop php84-php-fpm # 停止 PHP-FPM 服务
sudo systemctl disable php84-php-fpm # 禁用开机自启
sudo dnf -y remove php84 php84-php-fpm php84-php-gd php84-php-mbstring php84-php-mysqlnd php84-php-xml php84-php-opcache php84-php-pecl-zip php84-php-bcmath php84-php-sodium # 卸载 PHP 8.4 基础包和常用扩展
rm -rf /etc/opt/remi/php84 # 删除 PHP 8.4 配置目录
rm -f /usr/bin/php /usr/bin/php84 # 删除 php84 命令软链接
sudo systemctl stop php83-php-fpm # 停止 PHP-FPM 服务
sudo systemctl disable php83-php-fpm # 禁用开机自启
sudo dnf -y remove php83 php83-php-fpm php83-php-gd php83-php-mbstring php83-php-mysqlnd php83-php-xml php83-php-opcache php83-php-pecl-zip php83-php-bcmath php83-php-sodium # 卸载 PHP 8.3 基础包和常用扩展
sudo rm -rf /etc/opt/remi/php83 # 删除 PHP 8.3 配置目录
sudo rm -f /usr/bin/php83 # 删除 php83 命令软链接
常用维护命令
sudo systemctl restart php84-php-fpm # 重启 PHP-FPM
sudo php -i # 查看 PHP 配置信息
sudo php --ini # 查看 PHP 配置文件路径
sudo php -m # 查看已加载的 PHP 模块
sudo php -l file.php # 检查 PHP 配置语法
故障排除
1. PHP-FPM 无法启动
检查步骤:
sudo journalctl -u php84-php-fpm # 查看错误日志
sudo php-fpm -t # 检查配置文件语法
2. 性能问题
- 检查 PHP-FPM 进程数配置
- 监控内存使用情况
- 检查 OPcache 配置
- 查看慢日志
3. 常见错误解决
-
500 错误
- 检查 PHP 错误日志
- 验证文件权限
- 检查 PHP-FPM 配置
-
502 错误
- 确认 PHP-FPM 运行状态
- 检查 PHP-FPM 和 Web 服务器的通信配置