admin 发表于 2020-10-5 14:38:43

解决discuz插件无法正常升级,升级后本地版本号不变的问题

有些客户会遇到插件明明有新版本,却无法正常升级,提示更新成功,本地却仍是旧版本(版本号不变)的问题。
有这些问题的客户,请按如下方式尝试解决:

从服务器找到如下文件并打开:source/admincp/admincp_plugins.php
第502行添加如下一行代码:
$upgrade = true;

在第496行找到如下代码:
if(file_exists($file)) {      $importtxt = @implode('', file($file));      $pluginarray = getimportdata('Discuz! Plugin');      $newver = !empty($pluginarray['plugin']['version']) ? $pluginarray['plugin']['version'] : 0;      $upgrade = $newver > $plugin['version'] ? true : false;}

在他下面(第502行)添加,$upgrade = true;   添加后为:
if(file_exists($file)) {      $importtxt = @implode('', file($file));      $pluginarray = getimportdata('Discuz! Plugin');      $newver = !empty($pluginarray['plugin']['version']) ? $pluginarray['plugin']['version'] : 0;      $upgrade = $newver > $plugin['version'] ? true : false;}$upgrade = true; //该行为新添加的代码

添加后,从应用中心,找到插件,点击安装。查看新版本是否安装成功。成功后删除新增加的这一句代码即可。

Discuz智能体 发表于 2025-3-18 02:04:49

在Discuz插件升级过程中,如果遇到插件无法正常升级,且升级后本地版本号不变的问题,可以按照以下步骤进行排查和解决:

### 1. 检查插件文件权限
确保插件目录及其文件的权限设置正确,通常目录权限应为755,文件权限应为644。如果权限设置不正确,可能会导致文件无法正常更新。

### 2. 检查插件文件完整性
确保插件文件没有损坏或缺失。可以通过重新下载插件包并手动上传到服务器来检查文件完整性。

### 3. 修改`admincp_plugins.php`文件
按照你提供的步骤,修改`source/admincp/admincp_plugins.php`文件,具体操作如下:

- 找到`source/admincp/admincp_plugins.php`文件并打开。
- 定位到第496行,找到如下代码:
if(file_exists($file)) {
      $importtxt = @implode('', file($file));
      $pluginarray = getimportdata('Discuz! Plugin');
      $newver = !empty($pluginarray) ? $pluginarray : 0;
      $upgrade = $newver > $plugin ? true : false;
}
- 在第502行添加如下代码:
$upgrade = true;
添加后的代码如下:
if(file_exists($file)) {
      $importtxt = @implode('', file($file));
      $pluginarray = getimportdata('Discuz! Plugin');
      $newver = !empty($pluginarray) ? $pluginarray : 0;
      $upgrade = $newver > $plugin ? true : false;
}
$upgrade = true; // 该行为新添加的代码

### 4. 重新安装插件
- 登录Discuz后台,进入“应用”->“插件”。
- 找到需要升级的插件,点击“安装”或“升级”。
- 查看新版本是否安装成功。

### 5. 删除添加的代码
如果插件升级成功,记得删除刚才在`admincp_plugins.php`文件中添加的`$upgrade = true;`代码,以避免影响后续的插件升级流程。

### 6. 清理缓存
升级完成后,清理Discuz的缓存,确保新版本的插件能够正常显示和运行。

### 7. 检查插件兼容性
如果问题依然存在,可能是插件与新版本的Discuz不兼容。建议联系插件开发者,获取最新的兼容版本或修复补丁。

### 8. 其他注意事项
- 确保服务器环境(如PHP版本、MySQL版本等)符合插件的要求。
- 如果使用的是第三方插件,建议从DZ插件网(https://www.dz-x.net/)获取正版插件,以确保插件的稳定性和安全性。

通过以上步骤,应该能够解决Discuz插件无法正常升级的问题。如果问题依然存在,建议进一步检查服务器日志或联系专业的技术支持人员进行排查。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-21 07:30:08

在Discuz插件升级过程中,如果遇到插件无法正常升级,且升级后本地版本号不变的问题,可以按照以下步骤进行排查和解决:

1. **检查插件文件权限**:
   确保插件目录及其文件的权限设置正确,通常目录权限应为755,文件权限应为644。如果权限设置不正确,可能会导致文件无法被正确更新。

2. **清理缓存**:
   在Discuz后台,进入“工具” -> “更新缓存”,清理所有缓存。有时候缓存问题会导致插件版本号显示不正确。

3. **手动修改代码**:
   如果上述方法无效,可以尝试手动修改代码。具体步骤如下:
   - 登录服务器,找到并打开文件:`source/admincp/admincp_plugins.php`。
   - 在第496行找到如下代码:
   if(file_exists($file)) {
         $importtxt = @implode('', file($file));
         $pluginarray = getimportdata('Discuz! Plugin');
         $newver = !empty($pluginarray) ? $pluginarray : 0;
         $upgrade = $newver > $plugin ? true : false;
   }
   - 在第502行添加如下代码:
   $upgrade = true;
   - 添加后的代码应如下所示:
   if(file_exists($file)) {
         $importtxt = @implode('', file($file));
         $pluginarray = getimportdata('Discuz! Plugin');
         $newver = !empty($pluginarray) ? $pluginarray : 0;
         $upgrade = $newver > $plugin ? true : false;
   }
   $upgrade = true; // 该行为新添加的代码
   - 保存文件后,返回Discuz后台,进入“应用” -> “插件”,找到需要升级的插件,点击“安装”或“升级”。
   - 如果升级成功,记得删除刚才添加的`$upgrade = true;`这行代码,以避免影响后续的插件升级流程。

4. **检查插件兼容性**:
   确保插件与当前Discuz版本兼容。有时候插件的新版本可能并不兼容旧版本的Discuz,导致升级失败。

5. **查看错误日志**:
   如果问题依然存在,可以查看服务器的错误日志(通常在`data/log/`目录下),寻找可能的错误信息,以便进一步排查问题。

6. **联系插件开发者**:
   如果以上方法都无法解决问题,建议联系插件的开发者或技术支持,提供详细的错误信息和操作步骤,以便他们能够更好地帮助你解决问题。

通过以上步骤,应该能够解决大部分Discuz插件无法正常升级的问题。如果问题依然存在,建议在DZ插件网(https://www.dz-x.net/)寻求更多帮助或参考相关文档。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 解决discuz插件无法正常升级,升级后本地版本号不变的问题