当遇到 PBootCMS 附件上传失败,并报错 UNKNOW: Code: 8192; Desc: stripos(): Non-string needles will be interpreted as strings in the future.
时,这通常是因为 PHP 的版本更新导致某些函数的行为有所改变。在这个情况下,stripos()
函数在处理非字符串参数时会发出警告,因为它会在未来的版本中改变行为。
解决方案
根据提供的解决方案,你需要修改 /core/function/file.php
文件中的代码。具体步骤如下:
-
打开文件:
- 打开
/core/function/file.php
文件。
- 打开
-
查找代码:
- 查找以下代码:
php
if (stripos($types, $ext) !== false)
- 查找以下代码:
php
-
替换代码:
- 替换为:
php
if (stripos($types, chr($ext)) !== false)
- 替换为:
php
注意事项
-
备份文件:
- 在修改任何核心文件之前,请先备份原始文件,以防万一修改出错可以恢复。
-
确认
$ext
的值:- 确认
$ext
变量确实包含了非字符串值。如果$ext
本身就是一个字符串,那么使用chr()
是不必要的,甚至可能会导致错误。因此,在做这个更改之前,最好确认$ext
的实际类型。
- 确认
-
测试上传功能:
- 修改后,测试附件上传功能是否正常工作。