麒麟在线

当前位置:网站首页 / 技术 / 正文

Xiuno提示错误Fatal error: Cannot redeclare post_find_by_uid() (previously declared in .../tmp/model_post

这个报错本质很简单:同一个函数被定义了两次,PHP 直接崩了。

你看到的错误:

Cannot redeclare post_find_by_uid()

说明函数 post_find_by_uid() 在同一个文件里被重复声明了。


一、问题出现的常见原因(Xiuno 特别容易踩)

在 Xiuno BBS 里,这种错误通常不是你手写重复函数,而是:

1️⃣ 插件冲突(最常见)

多个插件同时“扩展/重写”了 post_find_by_uid()
👉 编译后被合并进:

/tmp/model_post.func.php

结果:函数被拼了两份


2️⃣ 插件写法不规范

有插件没有用:

PHP
if(!function_exists('post_find_by_uid')) {
   function post_find_by_uid(...) {
       ...
   }
}

👉 导致重复定义直接报错


3️⃣ tmp缓存没清干净

Xiuno 会把 hook 编译到 /tmp/ 目录
有时候你:

  • 卸载插件

  • 修改代码

但 tmp 还在用旧缓存


二、最快解决办法(建议按顺序来)

✅ 方法1:清空 tmp 缓存(优先做)

删除目录:

/www/wwwroot/wwwhostbbscom/tmp/*

👉 然后刷新页面


✅ 方法2:关闭最近安装的插件

如果你刚装了插件,直接:

  1. 进入后台 → 插件

  2. 逐个关闭(尤其是涉及“帖子/用户”的插件)


✅ 方法3:定位冲突插件(精准排查)

打开报错文件:

/tmp/model_post.func.php

搜索:

function post_find_by_uid

如果看到两段类似:

PHP
function post_find_by_uid(...) { ... }

...

function post_find_by_uid(...) { ... }

👉 往上看注释,Xiuno 会标明来源插件,例如:

PHP// hook plugin_xxx

👉 就能知道是哪两个插件冲突


✅ 方法4:手动修复(临时)

如果你急着恢复网站,可以改成:

PHP
if(!function_exists('post_find_by_uid')) {
   function post_find_by_uid(...) {
       ...
   }
}

⚠️ 但这只是临时止血,根因还是插件冲突

推荐阅读

文章标签:

版权声明: 本文除特别说明外均由原创

本文链接: https://www.70ol.com/jishu/359.html,尊重共享,欢迎转载,请自觉添加本文链接,谢谢!

分享本文: 请填写您的分享代码。

呃 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。