PbootCMS附件上传失败报错UNKNOW_ Code_ 8192; Desc_ stripos()_ Non-string needles will be interpreted as strings in the future.(1)

COS、CDN

PbootCMS附件上传失败报错“UNKNOW: Code: 8192; Desc: stripos(): Non-string needles will be interpreted as strings in the future.”是由于PHP版本更新导致的兼容性问题。具体来说,stripos()函数在处理非字符串类型的第二个参数(即needle)时,未来版本的PHP将会将其视为字符串,而当前版本则会发出警告。

解决方案

  1. 定位问题代码

    • 打开/core/function/file.php文件。
    • 找到第176行,该行代码应该是:
      php
       
      if (stripos($types, $ext) !== false)
  2. 修改代码

    • 将上述代码修改为:
      php
       
      if (stripos($types, chr($ext)) !== false)
  3. 保存文件

    • 保存修改后的文件。
  4. 测试上传功能

    • 重新尝试上传附件,检查是否解决了报错问题。

详细解释

  • stripos()函数

    • stripos()函数用于查找字符串首次出现的位置,返回位置索引,如果未找到则返回false
    • 第二个参数needle(即$ext)在当前代码中可能是非字符串类型(例如整数),这在未来的PHP版本中会被视为字符串,因此会发出警告。
  • chr()函数

    • chr()函数将整数转换为对应的ASCII字符。
    • 通过将$ext传递给chr()函数,确保$ext在传递给stripos()函数时是字符串类型,从而避免警告。

其他注意事项

  • 备份文件

    • 在修改任何核心文件之前,建议先备份原文件,以便在出现问题时能够快速恢复。
  • 测试环境

    • 如果可能,先在测试环境中进行修改和测试,确保修改不会引入新的问题。
  • 官方更新

    • 关注PbootCMS的官方更新,看看是否有新的版本已经修复了这个问题。

希望这些步骤能帮助您解决PbootCMS附件上传失败的问题。如果还有其他疑问,欢迎继续提问。

COS、CDN
热门