解决 PbootCMS 附件上传失败报错问题
在 PbootCMS 中遇到附件上传失败的错误信息:
上传失败:UNKNOW: Code: 8192; Desc: stripos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior; File: /www/wwwroot/aaa.xxxx.com/core/function/file.php; Line: 176;
这个错误提示表明 stripos()
函数的第二个参数 $ext
不是一个字符串,而是一个字符。未来版本中,PHP 将会把非字符串的 needle
参数解释为字符串,这会导致当前的行为发生变化。为了解决这个问题,需要确保 $ext
是一个字符串。
解决步骤
-
打开
file.php
文件- 使用文本编辑器或 IDE 打开
/www/wwwroot/aaa.xxxx.com/core/function/file.php
文件。
- 使用文本编辑器或 IDE 打开
-
查找并修改代码
- 找到第 176 行附近的代码:
php
if (stripos($types, $ext) !== false)
- 将其修改为:
php
if (stripos($types, (string)$ext) !== false)
解释:
chr($ext)
期望$ext
是一个整数(ASCII 值),这不符合实际情况,因为$ext
应该是一个字符串(如'jpg'
,'png'
等)。(string)$ext
将$ext
显式地转换为字符串,确保stripos()
函数的第二个参数是一个字符串。
- 找到第 176 行附近的代码:
-
保存文件
- 保存对
file.php
文件的修改。
- 保存对
-
测试上传功能
- 尝试再次上传附件,确认问题是否解决。
详细说明
-
原始代码:
phpif (stripos($types, $ext) !== false)
这里的
$ext
应该是一个字符串,表示文件扩展名(如'jpg'
,'png'
等)。 -
修改后的代码:
phpif (stripos($types, (string)$ext) !== false)
这里将
$ext
显式地转换为字符串,确保stripos()
函数的第二个参数是一个字符串。
其他注意事项
-
备份文件:
- 在修改任何核心文件之前,建议先备份原始文件,以防出现问题时可以恢复。
-
更新 PbootCMS:
- 如果你使用的是较旧版本的 PbootCMS,建议升级到最新版本,因为新版本可能已经修复了这个问题。
-
检查文件扩展名:
- 确保上传的文件扩展名是正确的,并且在允许的上传类型列表中。
扫码添加技术【解决问题】
专注中小企业网站建设、网站安全12年。
熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。
承接:企业仿站、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、网站漏洞修复等。
专业解决各种疑难杂症,您有任何网站问题都可联系我们技术人员。
本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18580550
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix