戏里戏外

Rocky Linux 上安装和管理 PHP

2024-11-13#PHP#CentOS

前提条件

  • 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. 常见错误解决

  1. 500 错误

    • 检查 PHP 错误日志
    • 验证文件权限
    • 检查 PHP-FPM 配置
  2. 502 错误

    • 确认 PHP-FPM 运行状态
    • 检查 PHP-FPM 和 Web 服务器的通信配置