问题描述:宝塔 Linux 面板 免费版 V7.1.1,已经安装了 PHP8.2,但在站点中无法切换到 PHP8.2 版本(可选项中没有显示 PHP8.2),该如何解决。
原因
7.1.1 获取PHP下拉列表是硬编码写在Python源码里,内置列表最高只写到81,没有82,哪怕你装上PHP8.2,网页下拉也不会出现。
优先分两条路线:
路线A:直接改站点Nginx配置(推荐,不用修改面板代码,最稳)
路线B:修改面板python源码,让下拉框出现PHP8.2(不推荐,升级面板会失效,有风险)
第一步:先确认PHP8.2是否真的安装成功(必须先做)
SSH执行:
ls /www/server/php/82
ls /etc/init.d/php-fpm-82
ls /tmp/php-cgi-82.sock
/www/server/php/82文件夹存在/etc/init.d/php-fpm-82启动脚本存在- 能看到
/tmp/php-cgi-82.sock代表php-fpm正常运行
启动php8.2-fpm:
/etc/init.d/php-fpm-82 start
查看运行状态:
/etc/init.d/php-fpm-82 status
如果这里启动失败,那后面全部不用试,先重装PHP8.2,是PHP编译失败。
方案A:直接修改站点Nginx配置【推荐,不用动面板源码】
- 宝塔后台 → 网站 → 找到站点 → 配置文件
- 找到
location ~ \.php$这一段
替换里面的fastcgi_pass为 php8.2 的socket:
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-82.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
- 保存配置,点击【重载Nginx】
⚠️ 缺点:网站设置里PHP下拉仍然不会显示PHP8.2,只是网站实际跑PHP8.2;以后在面板里点“切换PHP版本”会覆盖掉这段配置,需要留意。
测试:在网站根目录新建
phpinfo.php,内容
<?php phpinfo(); ?>
访问域名/phpinfo.php,看页面PHP版本确认是否是8.2。
方案B:修改面板源码,让下拉框出现PHP8.2(可选,有风险)
SSH打开面板站点处理文件:
vi /www/server/panel/class/panelSite.py
搜索关键词 phpVersions,你会看到类似这样的元组:
phpVersions = ('52','53','54','55','56','70','71','72','73','74','80','81')
在末尾加上 '82',修改后:
phpVersions = ('52','53','54','55','56','70','71','72','73','74','80','81','82')
保存退出,重启面板:
bt restart
浏览器 CTRL+F5 强制刷新宝塔页面,再进网站设置 → PHP,下拉就出现PHP8.2了。
⚠️ 风险提醒:
- 一旦执行
bt update升级面板,这个文件会被覆盖,82选项再次消失;- 修改面板源码,小概率造成网站模块报错,修改前建议备份这个文件
cp /www/server/panel/class/panelSite.py /www/server/panel/class/panelSite.py.bak出问题可以还原:
cp /www/server/panel/class/panelSite.py.bak /www/server/panel/class/panelSite.py
根治方案(强烈建议,生产环境优先)
7.1.1版本面板老旧,存在大量安全漏洞,且对PHP8.x系列支持不完善。
服务器先打快照/全量备份网站+数据库,再SSH执行升级命令:
bt update
升级完 bt restart,新版面板原生支持PHP8.2,不需要手动改代码。
排查补充
- 如果
/tmp/php-cgi-82.sock不存在:代表php-fpm82启动失败,看PHP8.2安装日志排查编译错误 - 确认你的web服务器是Nginx;如果是Apache,配置方式不一样,需要修改Apache的php-fpm代理配置
- 测试phpinfo后出现502:多半php-fpm82没启动,或者socket权限问题
你可以先执行这几条命令,把结果发给我,我帮你判断PHP8.2是否安装完整:
ls /www/server/php/
ps -ef | grep php-fpm
ls /tmp/php-cgi*.sock
0 条笔记