首页 文章 精选 留言 我的

精选列表

搜索[php8],共43篇文章
优秀的个人博客,低调大师

Xiuno BBS 审计之问题1:mysql_* 扩展移除,PHP8 致命错误

此文章为[XIUNOX](https://link.zhihu.com/?target=https%3A//github.com/domidesign/xiunox)版本重构审计时发现问题,[XIUNOX](https://link.zhihu.com/?target=https%3A//github.com/domidesign/xiunox)版本已优化修复此问题。分享出来方便后续想基于xiuno bbs4.0.4版本制作维护版本或插件模板等需求的开发者和站长参考。 ## **现象** Xiuno BBS 4.0.4 的 `db_mysql` 数据库驱动类以及安装向导大量调用 `mysql_connect / mysql_query / mysql_fetch_assoc / mysql_select_db / mysql_error / mysql_errno / mysql_insert_id / mysql_affected_rows / mysql_close` 等 `ext/mysql` 系列函数。该扩展在 PHP 5.5 被废弃,PHP 7.0 起整体移除,在 PHP 8 上调用会直接抛出 `Fatal error: Uncaught Error: Call to undefined function mysql_connect()`,导致数据库连接、查询、安装全部不可用。 ## **源码证据** 文件 `xiunobbs_4.0.4/xiunophp/db_mysql.class.php`(核心 mysql 驱动,共 13 处真实调用): ```javascript // 第 53-55 行:连接与选库 $link = @mysql_connect($host, $user, $password); // 如果用户名相同,则返回同一个连接。 fastcgi 持久连接更省资源 if(!$link) { $this->error(mysql_errno(), '连接数据库服务器失败:'.mysql_error()); return FALSE; } if(!mysql_select_db($name, $link)) { $this->error(mysql_errno(), '选择数据库失败:'.mysql_error()); return FALSE; } // 第 64, 77 行:结果集获取 $r = mysql_fetch_assoc($query); while($arr = mysql_fetch_assoc($query)) { // 第 106, 131 行:执行 SQL $query = mysql_query($sql, $link); $query = mysql_query($sql, $this->wlink); // 第 138, 140 行:获取 INSERT/UPDATE 影响 return mysql_insert_id($this->wlink); return mysql_affected_rows($this->wlink); // 第 175, 177 行:关闭连接 $r = mysql_close($this->wlink); $r = mysql_close($this->rlink); // 第 188-189 行:错误信息 $this->errno = $errno ? $errno : ($this->link ? mysql_errno($this->link) : mysql_errno()); $this->errstr = $errstr ? $errstr : ($this->link ? mysql_error($this->link) : mysql_error()); ``` 文件 `xiunobbs_4.0.4/xiunophp/xiunophp.min.php`(第 39 行整行压制的 `db_mysql` 类,逻辑与上面一致,包含相同的 13 处 `mysql_*` 调用,作为生产模式默认加载文件)。 文件 `xiunobbs_4.0.4/install/index.php`: ```javascript // 第 81 行:安装向导用 function_exists 探测 mysql_connect,PHP 8 下永远返回 FALSE,导致安装界面提示“不支持 mysql” $mysql_support = function_exists('mysql_connect'); // 第 135 行:当 $type == 'mysql' 时直接调用 mysql_query 建库,PHP 8 下 Fatal error if($type == 'mysql') { mysql_query("CREATE DATABASE $name"); $r = db_connect($db); } ``` 文件 `xiunobbs_4.0.4/xiunophp/db.func.php` 第 71-74 行:注释中提及 `mysql_insert_id/mysql_affected_rows/mysql_exec`,虽非真实调用,但说明设计期仍假定 mysql 驱动存在。 统计:真实 `mysql_*` 函数调用 —— `db_mysql.class.php` 13 处、`xiunophp.min.php` 13 处(同逻辑压缩)、`install/index.php` 2 处(`function_exists('mysql_connect')` 探测 1 处 + `mysql_query` 1 处)。 ## **风险等级与结论** 兼容障碍(致命)。`ext/mysql` 在 PHP 7.0 已被整体移除,PHP 8 中调用任意 `mysql_*` 函数均触发 `Fatal error: Call to undefined function`。 危害: 1. 当 `conf['db']['type'] == 'mysql'` 时(`conf.default.php` 默认值即 `'mysql'`),站点启动即崩溃,无法连接数据库。 1. 安装向导第 81 行 `function_exists('mysql_connect')` 永远返回 FALSE,若用户未启用 PDO,会被错误提示“环境不支持”而无法继续;若选 `type=mysql`,第 135 行建库直接 Fatal error。 1. `xiunophp.min.php` 是 `DEBUG <= 1` 时的默认加载文件,影响所有生产环境。 修复建议: 1. 强制将默认 `db.type` 改为 `pdo_mysql`,从 `conf.default.php`、`conf/conf.php`、安装向导中移除 `mysql` 类型选项;或在 `db_new()` 中拒绝 `'mysql'` 类型并回退到 `pdo_mysql`。 1. 删除 `xiunophp/db_mysql.class.php` 与 `xiunophp.min.php` 中的 `class db_mysql`,统一使用 `db_pdo_mysql`。 1. `install/index.php` 第 81 行改为只检测 `pdo_mysql`,第 134-136 行的 `mysql_query("CREATE DATABASE $name")` 改为通过 PDO 执行 `CREATE DATABASE`。 1. 若必须保留 `db_mysql` 类以兼容老配置,应在 `db_mysql.class.php` 顶部 `if(!function_exists('mysql_connect')) return;` 并在 `db_new()` 中提示用户切换驱动。

优秀的个人博客,低调大师

支持 PHP8 基于 TP6 的 Bwsaas 移动端跨平台 SAAS 平台开发框架持续更新

感言:为了把自己8年的开发技术以产品的形式展现出来,集结公司团队,为了减少开发维护者时间输出,才出了bwsaas可提供SAAS平台服务的框架(SAAS服务概念),为了大家更好地开发使用Bwsaas框架,又写了个Bwmall商城应用,让开发者更好更快速的二发出自己的应用,用Bwsaas框架开发出的应用版权归开发者所有哦。 本次了是花了很长的时间来更新,更新了100多个文件,点个小星星是对我们最大的支持,不足的地方还望联系指正 增加 1增加新的Bwsaas框架开发使用文档地址(持续更新) 2 布网商城bwmall应用默认增加app和头条类型 3 框架安装sql和自动生成sql增加字符集通用设定 4 布网商城 bwmall:更改商品编辑表单(不再限制步骤) 5 运营管理下菜单增加应用展示和查询 6 官网网站样式修改 7 租户和运营后台增加user openid展示和编辑 8 官方网站加title和描述,关键词,利于SEO优化 9 应用安装卸载加loading 10 租户资金明细加类型查询 11 插件简介增加标题,插件加提示 12 增加插件addons自定义路由功能 13 用户列表展示积分,插件管理页面调整 14 bwsaas框架处理跨域请求 15 增加saas应用套餐管理功能,自由配置应用售卖套餐 16 增加框架前端下拉选择(重写) 17 框架增加前后端分离API接口形式的验证码获取api/v1/getVerify,解决前端端分离,图形验证码需要API接口无法验证问题 18 插件中心新UI 19 bwsaas: 应用套餐取消续费套餐,后台售卖套餐增加价格规格,应用安装和生成去除套餐插入逻辑,购买增加价格规格逻辑 20 租户端应用购买和续费页面逻辑变更 21 运营平台admin修改为模板布局代替模板继承 22 云市场购买服务页面新UI 23 bwmall:添加和查询规格增加字典排序 24 bwsaas:插件控制器基类增加安装检测 25 租户UI修改为新框架UI 修复 1 修复布网商城佣金冻结时间为0返回数据不正确的问题;修复官网文章批量删除问题 2 解决插件详情顶部样式错乱,无鼠标样式 3 应用续费无套餐时样式修改 4 修复bwsaas框架中相关Apache下参数提交报错问题 5 500错误只提示有效信息,去除提示错误文件详细信息 6 bwsaas:修复框架封装js查询bug 7 bwsaas框架:更改用户取默认头像逻辑 8 bwmall商城应用: 更改用户取默认头像逻辑 9 bwmall应用商城签到修改 10 bwsaas:修复easy-admin 表格定位属性高度错乱,修复表格查询生成错误(范围判断错误和带点字段不识别错误) 运营管理下的菜单增加应用展示和查询筛选(右侧菜单固定,屏蔽不需要的查询,增加应用查询) 11 bwmall:修复文章判断错误 12 修复应用和应用插件安装时未使用应用配置就无法进行安装错误 13 bwsaas:修复应用和插件安装时菜单排序不对 14 bwsaas: 更新框架安装sql(应用套餐字段变更) 完善应用套餐购买逻辑 修复用户详情无反应 15 bwmall:增加规格详情mysql字段长度 16 修复bwmall商城应用菜单打开不正常 17 修复租户端角色管理BUG 优化 1 优化官方插件市场页面(新的) 2 bwmall应用安装sql增加默认表编码 3 bwsaas:操作日志记录登录参数问题

优秀的个人博客,低调大师

支持 PHP8 基于 TP6 的 bwsaas 多租户多应用多终端 SAAS 平台框架持续更新

新增 1 bwmall商城增加微信小程序直播插件 2 bwmall应用商城更新签到插件,打印机对接插件 3 增加bwmall应用安卓APP演示 4 删除根目录开源应用中文目录,直接放在app/下 5 更新composer包vendor目录到最新 6 更新hnlg666/bwsaas-addons包到v1.8.1 7 更新到thinkphp6框架到官方最新版本v6.0.8 8 包easywechat更新到4.4.1 9 增加框架用户余额充值app和h5支付 修复 1 修复租户后台菜单tab切换重影,不更新问题 2 修复签到结果排序问题 3 官网注册短信验证码发送事件修复 4 修复composer.json配置 5 个人中心已购插件显示错误修复 6 修复addons_demo插件安装报错,修改为新版插件安装配置,修复插件中心购买按钮失效问题 优化 1 更新bwmall应用管理菜单 2 删除无用代码、文件

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册