|

Word Press 建站 3:PHP 主流版本(7.4 / 8.3)的安装 / 升级 / 卸载

PHP7 和 PHP8 是 PHP 的两个重要版本。PHP7 显著提升了性能和内存效率,增强了错误处理机制,广…

一、PHP 简述

1.1 PHP 7.4

发布时间:2019 年 11 月

主要特点

  1. 箭头函数(Arrow Functions):用 fn() 简化匿名函数写法,适合一行表达式函数。
  2. 类型提示增强:支持 typed properties,可以在类属性中直接声明类型。
  3. 预加载(Preloading):提升应用性能,常用于大型框架和 WordPress 插件优化。
  4. null 合并赋值运算符 (??=):简化变量默认值赋值操作。
  5. 性能改进:相比 PHP 7.3,性能提升明显,兼容性较好,WordPress 官方广泛支持。

适用场景

  • WordPress 5.x 系列和大多数插件/主题稳定运行。
  • 对代码兼容性要求高、稳定性优先的项目。
  • VPS 或共享主机环境,资源占用相对低。

1.2 PHP 8.3

发布时间:预计 2025 年底(已发布 RC)

主要特点

  1. JIT 进一步优化:提升计算密集型任务性能,但对 WordPress 插件影响有限。
  2. 新的特性
    • Readonly classes:整个类属性只读,增强数据安全性。
    • Array unpacking 支持字符串键:在数组合并操作中更灵活。
    • fsync() 和 fdatasync() 支持:增强文件操作控制。
    • 改进的错误处理:更多类型安全和警告信息,有助于调试。
  3. 弃用与废弃
    • 某些过时函数和用法被正式弃用,需要注意兼容性。
  4. 性能提升:整体执行速度比 PHP 7.4 高 10%–30%,尤其在高并发或复杂计算场景。

适用场景

  • 希望使用最新 PHP 特性开发插件或主题。
  • 对性能和新特性有需求的托管环境。
  • 需要严格类型安全、现代化开发习惯的项目。

二、系统PHP安装源

2.1 PHP 7.4

##查看php模块列表
dnf module list php

## 手动安装EPEL9
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm  -y 

##安装Remi仓库
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm  -y

##重置php模块,避免冲突 
dnf module reset php -y

##启动PHP7.4 
dnf module enable php:remi-7.4 -y

2.2 PHP 8.3

yum install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
yum module reset php
yum module enable php:remi-8.2

三、rpm/dnf方式安装

3.1 版本7.4

##安装
dnf install -y php php-fpm php-cli php-common php-mysqlnd php-gd php-mbstring php-xml php-curl php-zip php-opcache php-pecl-apcu php-intl

3.2 版本8.3

yum install -y php php-fpm php-cli php-common php-mysqlnd php-gd php-mbstring php-xml php-curl php-zip php-opcache php-pecl-apcu php-imagick php-pecl-redis php-pecl-memcached php-intl

四、PHP卸载/升级

4.1 确认版本

 rpm -qa | grep -i php
php-json-7.4.33-23.el9.remi.x86_64
php-common-7.4.33-23.el9.remi.x86_64
php-pdo-7.4.33-23.el9.remi.x86_64
php-cli-7.4.33-23.el9.remi.x86_64
php-opcache-7.4.33-23.el9.remi.x86_64
oniguruma5php-6.9.10-1.el9.remi.x86_64
php-mbstring-7.4.33-23.el9.remi.x86_64
php-sodium-7.4.33-23.el9.remi.x86_64
gd3php-2.3.3-9.el9.remi.x86_64
php-fpm-7.4.33-23.el9.remi.x86_64
php-xml-7.4.33-23.el9.remi.x86_64
php-7.4.33-23.el9.remi.x86_64
php-gd-7.4.33-23.el9.remi.x86_64
php-pecl-zip-1.22.5-1.1.el9.remi.7.4.x86_64
php-mysqlnd-7.4.33-23.el9.remi.x86_64
php-pecl-imagick-im7-3.8.0-1.el9.remi.7.4.x86_64
php-pecl-msgpack-3.0.0-1.el9.remi.7.4.x86_64
php-pecl-igbinary-3.2.16-1.el9.remi.7.4.x86_64
php-pecl-memcached-3.3.0-1.el9.remi.7.4.x86_64
php-pecl-redis5-5.3.7-1.el9.remi.7.4.x86_64
php-devel-7.4.33-23.el9.remi.x86_64
php-intl-7.4.33-23.el9.remi.x86_64
php-soap-7.4.33-23.el9.remi.x86_64
php-bcmath-7.4.33-23.el9.remi.x86_64

4.2 一键卸载

sudo systemctl stop php-fpm 2>/dev/null || true

# 卸载所有 PHP 7.4 相关包
sudo dnf remove -y 'php*' 'oniguruma5php' 'gd3php'

# 自动清理依赖
sudo dnf autoremove -y

# 删除残留目录
sudo rm -rf /etc/php.d /etc/php-fpm.d /etc/php.ini /etc/php /var/lib/php

# 禁用并删除旧服务
sudo systemctl disable --now php-fpm 2>/dev/null || true

4.3 升级

## 修改php系统源
yum install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
yum module reset php
yum module enable php:remi-8.2

##安装相关程序
yum install -y php php-fpm php-cli php-common php-mysqlnd php-gd php-mbstring php-xml php-curl php-zip php-opcache php-pecl-apcu php-imagick php-pecl-redis php-pecl-memcached php-intl

五、PHP 相关命令

systemctl status php-fpm
systemctl start php-fpm
systemctl stop php-fpm
systemctl enable php-fpm

获取模块信息:php -m

六、相关配置

6.1 配置修改

为了前端可以正常请求php传输的session,权限文件的配置必不可少

vim /etc/php-fpm.d/www.conf

listen = 127.0.0.1:9000
listen.owner = nginx
listen.group = nginx
user = nginx
group = nginx

6.2 性能优化

安装完 PHP 后,考虑性能优化也是至关重要

vim /etc/php.ini

# 设置内存限制
memory_limit = 256M
# 开启 OPcache
opcache.enable=1

优化性能的同时,不能对设备过于拖累,要对进程数量进行限制

vim /etc/php-fpm.d/www/conf

## 限制进程数自增
pm = static
## 限制进程数
pm.max_children = 2

6.3 问题预处理

  • PHP 在运行时会在 /var/lib/php 目录下创建 session 文件、缓存文件
  • 如果这些文件或目录不属于运行 php-fpm 的用户(通常是 nginx 或 www-data),PHP无法写入,会引发此问题
  • 修改归属为 nginx:nginx 后,php-fpm 就有权限写入这些目录和文件了
  • 仅将 PHP 运行用户设置为目录所有者,而不是给全体用户写权限,比 chmod 777 安全

PHP Warning: session_start(): open(/var/lib/php/sess_XXXXX, O_RDWR) failed: Permission denied

cd /var/lib/php


chown -R nginx:nginx /var/lib/php

七、测试访问

配置好nginx映射,在nginx/html目录写入示例代码

随后浏览器访问http://your_domain/phpinfo.php

echo "<?php phpinfo(); ?>" > nginx/html/phpinfo.php

示例图片

类似文章