加油
努力

在Alibaba Cloud 3 (x86_64)系统上如何安装和配置PHP?

在 Alibaba Cloud 3(即 Alibaba Cloud Linux 3,基于 RHEL 8/CentOS 8 兼容的国产操作系统,x86_64 架构)上安装和配置 PHP,推荐使用系统官方仓库(alinux3 官方源)提供的 PHP 版本(默认为 PHP 8.0),也可按需升级至 PHP 8.1/8.2(通过 epelremi 源)。以下是安全、稳定、符合阿里云最佳实践的完整步骤:


✅ 前提确认

# 查看系统信息(确认为 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 phpdnf module reset phpdnf 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 性能调优配置,欢迎随时提出! 🌟

云服务器