3.4升级3.5出现这个
Fatal error: Uncaught Error: Call to undefined function getglobal() in E:\wwwroot\www.df5.cn\source\class\discuz\discuz_error.php:348 Stack trace: #0 E:\wwwroot\www.df5.cn\source\class\discuz\discuz_error.php(185): discuz_error::write_error_log('<b>Call to unde...') #1 E:\wwwroot\www.df5.cn\source\class\class_core.php(121): discuz_error::exception_error(Object(Error)) #2 : core::handleException(Object(Error)) #3 {main} thrown in E:\wwwroot\www.df5.cn\source\class\discuz\discuz_error.php on line 348我知道答案 回答被采纳将会获得1 贡献 已有0人回答 在Discuz! 3.4升级到3.5的过程中,出现`Fatal error: Uncaught Error: Call to undefined function getglobal()`的错误,通常是因为在升级过程中某些文件没有正确更新或覆盖,导致函数`getglobal()`未定义。
### 解决方法:
1. **检查文件完整性**:
- 确保在升级过程中,所有Discuz! 3.5的文件都已正确上传并覆盖了旧版本的文件。特别是`source/class/discuz/discuz_error.php`文件,确保它是3.5版本的文件。
2. **手动修复`getglobal()`函数**:
- `getglobal()`是Discuz!中常用的全局变量获取函数。如果该函数未定义,可能是因为某些核心文件未正确加载。你可以尝试在`discuz_error.php`文件中手动引入`getglobal()`函数的定义。
- 在`discuz_error.php`文件的顶部添加以下代码:
if (!function_exists('getglobal')) {
function getglobal($var, $key = null) {
global $_G;
if ($key === null) {
return isset($_G[$var]) ? $_G[$var] : null;
} else {
return isset($_G[$var][$key]) ? $_G[$var][$key] : null;
}
}
}
- 这样可以临时解决`getglobal()`函数未定义的问题。
3. **重新上传核心文件**:
- 如果手动修复后问题仍然存在,建议重新上传Discuz! 3.5的核心文件,特别是`source/class`目录下的文件,确保所有文件都是最新版本。
4. **检查插件和模板兼容性**:
- 某些插件或模板可能依赖于旧版本的Discuz!函数或文件,导致升级后出现兼容性问题。建议在升级前禁用所有插件,并在升级后逐一启用,检查是否有插件导致问题。
5. **清理缓存**:
- 升级完成后,清理Discuz!的缓存文件。可以通过后台的“工具”->“更新缓存”来清理缓存,或者手动删除`data/cache`目录下的所有文件。
6. **检查PHP版本**:
- 确保你的服务器PHP版本符合Discuz! 3.5的要求。Discuz! 3.5要求PHP版本为5.6或更高版本。
### 总结:
这个问题通常是由于文件未正确覆盖或某些核心函数未定义导致的。通过检查文件完整性、手动修复函数、重新上传核心文件等方法,应该可以解决这个问题。如果问题仍然存在,建议检查插件和模板的兼容性,并确保PHP版本符合要求。
如果你在操作过程中遇到其他问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 在Discuz! 3.4升级到3.5的过程中,出现 `Fatal error: Uncaught Error: Call to undefined function getglobal()` 的错误,通常是因为在升级过程中某些文件没有正确更新或覆盖,导致系统无法找到 `getglobal()` 函数。
### 解决方法:
1. **检查文件完整性**:
- 确保你下载的Discuz! 3.5版本是完整的,并且所有文件都已正确上传到服务器。
- 你可以通过重新上传 `source/class/discuz/discuz_error.php` 文件来修复这个问题。
2. **清理缓存**:
- 在升级过程中,Discuz! 会生成一些缓存文件,这些缓存文件可能会导致升级后出现错误。你可以手动删除 `data/cache` 目录下的所有文件,然后刷新页面。
3. **检查函数定义**:
- `getglobal()` 是Discuz! 中的一个全局函数,通常定义在 `source/function/function_core.php` 文件中。你可以检查这个文件是否存在,并且是否包含 `getglobal()` 函数的定义。
4. **重新运行升级脚本**:
- 如果问题依然存在,可以尝试重新运行升级脚本。确保在升级过程中没有中断或错误。
5. **检查插件兼容性**:
- 如果你在升级前安装了某些插件,这些插件可能与Discuz! 3.5不兼容。你可以尝试禁用所有插件,然后重新升级。
6. **手动修复代码**:
- 如果以上方法都无法解决问题,你可以手动检查 `discuz_error.php` 文件中的代码,确保它正确调用了 `getglobal()` 函数。你可以参考Discuz! 3.5的官方文档或源码来修复这个问题。
### 具体操作步骤:
1. **重新上传文件**:
- 从Discuz! 3.5的安装包中提取 `source/class/discuz/discuz_error.php` 文件,并重新上传到服务器的对应目录。
2. **清理缓存**:
- 登录FTP或服务器管理面板,找到 `data/cache` 目录,删除其中的所有文件。
3. **检查函数定义**:
- 打开 `source/function/function_core.php` 文件,搜索 `getglobal()` 函数,确保它存在且定义正确。
4. **重新运行升级脚本**:
- 访问 `http://你的网站地址/install/update.php`,重新运行升级脚本。
5. **禁用插件**:
- 登录Discuz! 后台,进入“应用” -> “插件”,禁用所有插件,然后重新尝试升级。
6. **手动修复代码**:
- 如果问题依然存在,可以手动检查 `discuz_error.php` 文件中的代码,确保它正确调用了 `getglobal()` 函数。
### 总结:
这个问题通常是由于文件未正确更新或缓存问题导致的。通过重新上传文件、清理缓存、检查函数定义等方法,通常可以解决这个问题。如果问题依然存在,建议参考Discuz! 3.5的官方文档或寻求更专业的技术支持。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]