LOMP/OpenLiteSpeed环境WordPress多站点PHP版本兼容问题咨询
OpenLiteSpeed多PHP版本共存部署方案(适配WordPress多站点跨版本需求)
OpenLiteSpeed原生支持多PHP版本并行运行,不需要额外配置反向代理或容器隔离,直接通过官方lsphp组件即可实现7.2-8.0全版本共存,支持站点级、目录级的版本绑定,完全适配多插件不同版本要求。
一、安装7.2-8.0全区间PHP版本
所有PHP版本以lsphp(LiteSpeed专属SAPI接口的PHP二进制包)形式安装,各版本目录、配置、扩展完全独立,不会互相覆盖。
- 先添加LiteSpeed官方软件源,确保包管理器能拉取到全版本lsphp安装包,不要使用系统默认源的通用PHP包,通用包无法被OLS直接调用,且性能比lsphp低15%以上。
- 安装所有目标版本及WordPress必备扩展,以Debian/Ubuntu系统为例,执行以下命令:
# 安装PHP7.2及WordPress依赖扩展 apt install -y lsphp72 lsphp72-common lsphp72-mysql lsphp72-curl lsphp72-gd lsphp72-mbstring lsphp72-xml lsphp72-zip lsphp72-opcache lsphp72-imagick # 安装PHP7.3及WordPress依赖扩展 apt install -y lsphp73 lsphp73-common lsphp73-mysql lsphp73-curl lsphp73-gd lsphp73-mbstring lsphp73-xml lsphp73-zip lsphp73-opcache lsphp73-imagick # 安装PHP7.4及WordPress依赖扩展 apt install -y lsphp74 lsphp74-common lsphp74-mysql lsphp74-curl lsphp74-gd lsphp74-mbstring lsphp74-xml lsphp74-zip lsphp74-opcache lsphp74-imagick # 安装PHP8.0及WordPress依赖扩展 apt install -y lsphp80 lsphp80-common lsphp80-mysql lsphp80-curl lsphp80-gd lsphp80-mbstring lsphp80-xml lsphp80-zip lsphp80-opcache lsphp80-imagick
所有版本默认安装路径为/usr/local/lsws/lsphp{版本号}/,二进制文件在对应目录的bin子文件夹下,配置文件在etc子文件夹下,完全隔离。
CentOS/RHEL系统将上述命令替换为yum对应安装命令即可,包名规则完全一致。
二、OLS控制台配置多PHP映射
安装完成后不需要手动启动PHP进程,所有lsphp进程由OLS统一托管,按以下步骤配置:
- 登录OLS WebAdmin控制台,默认地址为
https://服务器IP:7080 - 进入
Server Configuration > External App页面,逐个添加每个PHP版本的外部应用,应用类型选择LiteSpeed SAPI App,每个应用配置参数如下:- Name:命名为
lsphp{版本号},比如lsphp72、lsphp74,方便后续识别 - Address:使用Unix套接字,格式为
uds://tmp/lshttpd/lsphp{版本号}.sock,性能比TCP端口高30%左右 - Max Connections:根据服务器配置设置,2核4G机器设为100,4核8G设为200即可
- Command:填写对应版本的lsphp二进制路径,比如PHP7.2填
/usr/local/lsws/lsphp72/bin/lsphp,其他版本替换路径中的版本号 - Initial Request Timeout、Retry Timeout统一设为60,避免WordPress插件安装、批量升级时超时
- Name:命名为
- 所有外部应用添加完成后,做两层版本绑定适配业务需求:
- 站点级默认版本绑定:进入
Virtual Hosts列表选中目标WordPress站点,打开Script Handler标签页,将.php后缀的默认处理程序设置为站点主用PHP版本(建议选兼容性覆盖最广的7.4作为默认版本),保存配置。 - 目录级版本覆盖:如果同站点内部分插件必须使用指定PHP版本,进入对应虚拟主机的
Rewrite标签页,添加重写规则实现目录单独绑定,比如要将必须运行在PHP7.2的旧插件目录绑定到7.2版本,规则如下:
要绑定PHP8.0的新插件目录时,只需要把规则末尾的RewriteRule ^wp-content/plugins/legacy-old-plugin/(.*)$ - [E=LSAPI_CHILD_APP=lsphp72,L]lsphp72替换为lsphp80即可,多条规则可叠加,互不冲突。
- 站点级默认版本绑定:进入
- 点击控制台右上角的
Graceful Restart平滑重启OLS,配置即可生效,重启过程不会中断正在访问的业务请求。
三、后续新增/升级PHP版本的标准化流程
后续需要适配更高/更低PHP版本时,不需要改动现有配置,按以下流程操作即可:
- 直接通过包管理器安装对应版本的lsphp包和所需扩展,包名规则和之前一致,比如要装PHP8.2就安装所有lsphp82开头的包
- 回到OLS控制台的External App页面,新增对应版本的LiteSpeed SAPI应用,配置参数和之前的规则一致,替换路径、套接字文件名、应用名里的版本号即可
- 按需将新PHP版本绑定到对应站点或目录,再次执行平滑重启即可生效,不会影响现有版本的运行。
四、WordPress多站点稳定性优化配置
- 每个PHP版本的配置文件单独修改,路径为
/usr/local/lsws/lsphp{版本号}/etc/php/{版本号}/litespeed/php.ini,统一开启opcache:设置opcache.enable=1、opcache.memory_consumption=128、opcache.max_accelerated_files=10000,可将多插件场景下的PHP响应速度提升50%以上 - 所有版本的
upload_max_filesize、post_max_size、memory_limit统一设置为256M以上,避免多站点媒体上传、批量更新插件时出现内存不足、上传大小限制报错 - 不要跨版本混用扩展,每个PHP版本的扩展必须安装对应版本号的lsphp扩展包,否则会出现500错误
- 配置完成后可在站点根目录临时放置phpinfo探针,分别访问不同插件目录确认PHP版本符合预期,验证完成后立即删除探针,避免泄露服务器配置信息。
内容的提问来源于stack exchange,提问作者Aaditya Goenka
相关产品推荐
相关产品推荐

