在 TencentOS Server 3.1(基于 CentOS/RHEL 8 体系)上安装 PHP 8.2 并配置 php-fpm,推荐使用官方或社区维护的 YUM/DNF源。以下是详细步骤:
✅ 前提条件
- 系统:TencentOS Server 3.1(内核版本 ≥ 4.18)
- 权限:root 或具有 sudo 权限的用户
- 网络连接正常
📦 第一步:启用 EPEL 和 Remi 仓库(推荐方式)
PHP 8.2 不在腾讯云默认基础仓库中,需通过 Remi Repository 安装。
# 1. 安装 EPEL 和 Remi 仓库
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# 2. 启用 Remi 的 PHP 8.2 模块
sudo dnf module reset php -y
sudo dnf module enable php:remi-8.2 -y
💡 如果你希望使用更稳定的来源,也可考虑 Webtatic 或 IUS,但 Remi 是目前最广泛使用的第三方 PHP 源之一。
🐘 第二步:安装 PHP 8.2 及常见扩展
# 安装 PHP 8.2 核心及常用扩展
sudo dnf install -y php php-fpm php-cli php-common
php-mysqlnd php-pdo php-gd php-mbstring php-xml php-json
php-zip php-curl php-intl php-opcache php-bcmath php-redis
php-memcached php-swoole php-yar php-amqp
⚠️ 注意:根据实际需求选择扩展。例如:
php-mysqlnd:MySQL 支持php-gd:图像处理php-mbstring:多字节字符串支持php-opcache:性能优化php-redis/php-memcached:缓存支持
🔧 第三步:启动并启用 php-fpm 服务
# 启动 php-fpm
sudo systemctl start php-fpm
# 设置开机自启
sudo systemctl enable php-fpm
# 检查状态
sudo systemctl status php-fpm
验证是否正常运行:
ps aux | grep php-fpm
ss -tlnp | grep :9000 # 默认监听 127.0.0.1:9000
🌐 第四步:配置 Nginx/Apache 与 php-fpm 集成(以 Nginx 为例)
安装 Nginx(如未安装)
sudo dnf install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
修改 Nginx 配置文件
编辑站点配置文件,例如 /etc/nginx/conf.d/default.conf 或 /etc/nginx/sites-available/your-site.conf:
server {
listen 80;
server_name example.com;
root /usr/share/nginx/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
# 处理 PHP 文件
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
🔁 重启 Nginx 使配置生效:
sudo systemctl restart nginx
🧪 第五步:测试 PHP-FPM 是否正常工作
创建测试文件:
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
访问浏览器:http://your-server-ip/info.php
如果看到 PHP 信息页面,说明安装成功!
🛡️ 安全建议
- 禁止暴露 phpinfo() 在生产环境
- 确保
php-fpm不以 root 运行(默认已配置为nobody用户) - 限制
open_basedir、disable_functions等安全选项 - 定期更新系统和 PHP 包:
sudo dnf update php* -y
❓常见问题排查
| 问题 | 解决方案 |
|---|---|
502 Bad Gateway |
检查 php-fpm 是否运行;确认 Nginx 配置的 fastcgi_pass 地址正确 |
Permission denied |
检查 /var/lib/php/session、日志目录权限;确保 php-fpm 用户有写权限 |
Module not found |
确认对应扩展已安装且 php.ini 中未注释 |
如需进一步自定义(如调整 pm.max_children、opcache 参数等),可编辑 /etc/php-fpm.d/www.conf 和 /etc/php.d/*.ini 文件。
如有特定需求(如配合 Laravel、WordPress 等框架),可继续提问!
云小栈