本网站源码编译php版本更新操作步骤

🔧 一、准备工作

✅ 1. 安装编译依赖

sudo dnf install -y gcc make libxml2-devel sqlite-devel openssl-devel \
    curl-devel libpng-devel libjpeg-turbo-devel freetype-devel \
    libzip-devel bzip2-devel readline-devel oniguruma-devel systemd-devel

✅ 2. 下载 PHP 8.3 源码

cd /usr/local/src
sudo wget https://www.php.net/distributions/php-8.3.0.tar.gz
sudo tar -xvf php-8.3.0.tar.gz
cd php-8.3.0

⚙️ 二、编译安装 PHP 8.3

✅ 1. 配置编译选项

./configure --prefix=/usr/local/php83 \
            --with-config-file-path=/usr/local/php83/etc \
            --enable-fpm \
            --with-fpm-systemd \
            --with-fpm-user=nginx \
            --with-fpm-group=nginx \
            ...(其他模块配置)

✅ 2. 编译安装

make -j$(nproc)
sudo make install

✅ 3. 基础配置

sudo cp php.ini-production /usr/local/php83/etc/php.ini
sudo mkdir /usr/local/php83/etc/conf.d

🔌 三、PHP-FPM 配置

✅ 1. 创建配置文件

sudo cp /usr/local/php83/etc/php-fpm.conf.default /usr/local/php83/etc/php-fpm.conf
sudo cp /usr/local/php83/etc/php-fpm.d/www.conf.default /usr/local/php83/etc/php-fpm.d/www.conf

✅ 2. 配置监听 socket

# /usr/local/php83/etc/php-fpm.d/www.conf
[www]
listen = /run/php83-fpm/www83.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

✅ 3. 进程管理配置

pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10

🚀 四、Systemd 服务配置

✅ 1. 创建服务文件

# /etc/systemd/system/php83-fpm.service
[Service]
Type=notify
ExecStart=/usr/local/php83/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php83/etc/php-fpm.conf
RuntimeDirectory=php83-fpm
RuntimeDirectoryMode=0755
...

✅ 2. 启用服务

sudo systemctl daemon-reload
sudo systemctl enable --now php83-fpm

🌐 五、Nginx 配置更新

✅ 1. 修改 PHP 处理配置

# /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
    fastcgi_pass   unix:/run/php83-fpm/www83.sock;
    ...
}

✅ 2. 应用配置

sudo /usr/local/nginx/sbin/nginx -t  # 测试配置
sudo systemctl reload nginx

🔒 六、权限与安全

✅ 1. 目录所有权修改

sudo chown -R nginx:nginx /usr/local/nginx/html

✅ 2. 文件权限设置

# 目录 755
sudo find /usr/local/nginx/html -type d -exec chmod 755 {} \;

# 文件 644
sudo find /usr/local/nginx/html -type f -exec chmod 644 {} \;

✅ 3. SELinux 策略

sudo semanage fcontext -a -t httpd_var_run_t "/run/php83-fpm(/.*)?"
sudo restorecon -Rv /run/php83-fpm

🧹 七、旧版本清理

✅ 1. 停止并禁用旧服务

sudo systemctl stop php-fpm
sudo systemctl disable php-fpm

✅ 2. 清理残留进程

sudo pkill -9 -f php-fpm
sudo rm -f /run/php-fpm/*

✅ 当前成功状态总结

  1. PHP 8.3 运行中systemctl status php83-fpm 显示 active (running)
  2. Nginx 配置更新:所有 PHP 请求指向新 socket
  3. 权限正确:网站目录所有权已改为 nginx:nginx
  4. 旧版完全禁用:无 apache 用户 PHP-FPM 进程残留
  5. SELinux 兼容:已添加新 socket 目录规则

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部