PbootCMS 附件上传报错 “UNKNOW: Code: 8192” 解决教程

PbootCMS 附件上传报错 “UNKNOW: Code: 8192” 解决教程.png

在使用 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/网站域名/core/function/file.php; Line: 176;

这个错误通常出现在 PHP 8.1 及以上版本中,是因为 stripos() 函数在未来版本中会严格要求第二个参数为字符串类型,而 PbootCMS 原有的代码中可能传入了非字符串类型(如整数),导致了警告或上传失败。

家兴网络将详细讲解解决方法,帮助你快速修复附件上传问题。


错误原因分析

stripos() 是 PHP 用于查找字符串的函数,其原型如下:

stripos(string $haystack, string $needle, int $offset = 0): int|false
  • $haystack:要搜索的字符串

  • $needle:要查找的子字符串

在 PbootCMS 的源码中,附件上传类型检查是这样写的:

if (stripos($types, $ext) !== false)

这里的 $ext 是文件扩展名,某些情况下它可能被处理为整数类型,PHP 8.1 会提示警告,未来版本将严格要求为字符串,从而导致上传失败。


解决方法

  1. 打开 PbootCMS 根目录下的 core/function/file.php 文件。

  2. 找到第 176 行左右的以下代码:

if (stripos($types, $ext) !== false)
  1. 修改为:

if (stripos($types, chr($ext)) !== false)

这里使用 chr() 函数将整数转换为对应字符,从而保证 stripos() 接收的参数类型正确,避免 PHP 报错。

  1. 保存文件后,刷新后台上传页面,测试附件上传是否正常。


注意事项

  • 建议在修改前备份 file.php 文件,以防止操作失误导致系统异常。

  • 该修改适用于 PHP 8.1 及以上版本,如果你使用的是低版本 PHP,可能不需要此操作。

  • 若修改后仍有报错,可在上传类型检查处打印 $ext$types 变量,确认类型是否正确。

示例:

var_dump($ext, $types);
exit;

总结

PbootCMS 附件上传报错 Code: 8192 是 PHP 版本升级导致的兼容性问题。通过将 stripos() 的第二个参数改为字符串类型(使用 chr() 转换),即可彻底解决上传失败问题。

这种修改方式简单高效,适合广大 PbootCMS 用户在 PHP 8+ 环境下使用。


✅ 解决关键点:

  • 错误原因:PHP 8.1 对 stripos() 参数类型要求严格

  • 修改文件:core/function/file.php

  • 修改方法:if (stripos($types, $ext) !== false)if (stripos($types, chr($ext)) !== false

作者王家兴头像

王家兴

资深网络营销顾问,8年数字营销经验,曾为多家知名企业提供网站建设、搜索引擎优化、短视频营销、GEO AI营销服务,擅长内容策略规划。