在 Alibaba Cloud 3(即 Alibaba Cloud Linux 3,基于 RHEL 8/CentOS 8 兼容的国产操作系统,x86_64 架构)上安装和配置 PHP,推荐使用系统官方仓库(alinux3 官方源)提供的 PHP 版本(默认为 PHP 8.0),也可按需升级至 PHP 8.1/8.2(通过 epel 或 remi 源)。以下是安全、稳定、符合阿里云最佳实践的完整步骤:
✅ 前提确认
# 查看系统信息(确认为 Alibaba Cloud Linux 3)
cat /etc/os-release | grep -E "(NAME|VERSION)"
# 输出应类似:NAME="Alibaba Cloud Linux" VERSION="3 (Soaring Falcon)"
uname -m # 应为 x86_64
📦 步骤 1:更新系统并启用必要仓库
sudo dnf update -y
# 确保 epel 仓库已启用(ALinux 3 默认已预装并启用 epel)
sudo dnf install -y epel-release
# (可选)如需更多 PHP 版本(如 8.1/8.2),可启用 remi 仓库(推荐用于生产环境升级)
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf module reset php # 重置 DNF PHP 模块状态(避免冲突)
💡 说明:
- ALinux 3 默认使用
dnf module管理 PHP(多版本共存支持);php:remi-82提供 PHP 8.2(最新 LTS),php:remi-81为 8.1,php:default为系统默认 8.0。
🚀 步骤 2:安装 PHP 及常用扩展(推荐 PHP 8.2)
✅ 方式 A:安装 PHP 8.2(推荐,安全更新更及时)
# 启用 remi-82 模块
sudo dnf module enable php:remi-82
# 安装核心 PHP + 常用扩展(含 FPM、CLI、OPcache、MySQLi、cURL、GD、XML、JSON 等)
sudo dnf install -y php php-fpm php-cli php-mysqlnd php-pdo php-gd php-mbstring php-xml php-json php-opcache php-curl php-zip
# 验证安装
php -v # 应显示 PHP 8.2.x
php-fpm -v # 同版本
⚙️ 方式 B:若坚持使用系统默认 PHP 8.0(不推荐新项目)
sudo dnf module enable php:default
sudo dnf install -y php php-fpm php-cli php-mysqlnd php-pdo php-gd php-mbstring php-xml php-json php-opcache
✅ 推荐选择 A(PHP 8.2):ALinux 3 对 remi 仓库官方支持良好,且 PHP 8.2 是当前最稳定的 LTS 版本(支持至 2025-12)。
⚙️ 步骤 3:配置 PHP(关键优化项)
1️⃣ 编辑主配置文件
sudo vim /etc/php.ini
修改以下关键参数(根据应用需求调整):
; 显示错误(生产环境务必关闭!)
display_errors = Off
log_errors = On
error_log = /var/log/php-fpm/www-error.log
; 时区(必须设置,否则 strtotime() 等函数报错)
date.timezone = Asia/Shanghai
; 内存与上传限制(按需调大)
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 128M
max_execution_time = 300
; OPcache 启用(强烈推荐)
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
2️⃣ 配置 PHP-FPM(Web 服务模式)
sudo vim /etc/php-fpm.d/www.conf
关键修改:
; 监听方式(推荐 Unix socket 提升性能 & 安全)
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
; 用户/组(ALinux 3 默认 web 服务为 nginx)
user = nginx
group = nginx
; 进程管理
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
🔒 注意:确保
nginx用户存在(ALinux 3 默认已安装并创建nginx用户)。
▶️ 步骤 4:启动并设为开机自启
# 启动 PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
# 检查状态
sudo systemctl status php-fpm
sudo ls -l /run/php-fpm/www.sock # 应存在且权限正确(srw-rw----)
🌐 步骤 5:与 Nginx 集成(示例)
ALinux 3 默认安装 nginx(若未安装:sudo dnf install -y nginx)
编辑站点配置(如 /etc/nginx/conf.d/default.conf):
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html;
location ~ .php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
重启服务:
sudo nginx -t && sudo systemctl reload nginx
🧪 步骤 6:验证 PHP 运行
创建测试文件:
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
访问 http://<你的ECS公网IP>/info.php,应看到 PHP 8.2 信息页。
✅ 验证 CLI:
php -r "echo 'Hello ALinux3 + PHP 8.2!';"
🛡️ 安全加固建议(生产环境必做)
- 🔐 禁用危险函数(在
php.ini中):disable_functions = exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source - 📁 设置
open_basedir(按站点隔离) - 📜 日志审计:确保
/var/log/php-fpm/日志轮转(ALinux 3 默认由logrotate管理) - 🔁 定期更新:
sudo dnf update php* --enablerepo=remi
❌ 常见问题排查
| 现象 | 解决方案 |
|---|---|
502 Bad Gateway |
检查 php-fpm.sock 权限/路径、nginx 用户是否在 nginx 组、SELinux 是否拦截(ALinux 3 默认禁用 SELinux,无需处理) |
php -v 显示旧版本 |
执行 dnf module list php → dnf module reset php → dnf module enable php:remi-82 → 重装 |
扩展缺失(如 mysqli) |
确认安装了 php-mysqlnd(推荐)或 php-mysqli;ALinux 3 中 mysqlnd 是默认驱动 |
✅ 总结命令速查(一键部署 PHP 8.2):
sudo dnf update -y
sudo dnf install -y epel-release https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf module reset php
sudo dnf module enable php:remi-82
sudo dnf install -y php php-fpm php-cli php-mysqlnd php-pdo php-gd php-mbstring php-xml php-json php-opcache php-curl php-zip
sudo sed -i 's/^;date.timezone =.*/date.timezone = Asia/Shanghai/' /etc/php.ini
sudo sed -i 's/^;opcache.enable=.*/opcache.enable=1/' /etc/php.ini
sudo systemctl enable --now php-fpm
# (后续配 nginx 即可)
如需支持 Laravel、WordPress 或 Composer,可追加安装:
sudo dnf install -y php-dom php-simplexml php-tokenizer php-xmlreader php-ctype php-fileinfo
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
需要我为你生成 完整的 LNMP 一键脚本、WordPress 部署指南 或 PHP 8.2 + Redis + OPCache 性能调优配置,欢迎随时提出! 🌟
云小栈