·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

可可文库插件后台设置了上传存储后前台浏览报错array rand():Argument #1($array)cannot be empty的解决办法

189 2
发表于 2024-9-23 11:07:14 | 查看全部 阅读模式 | Google Chrome| Windows 10

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
可可文库插件后台设置了上传存储后前台浏览报错array rand():Argument #1($array)cannot be empty的解决办法:

该问题由@李** 提供反馈与解决方法分享:
如图所示:
可可文库插件后台设置了上传存储后前台浏览报错array rand():Argument #1($array)cannot be empty的解决办法 php,插件,arrayrand,Argument,array

问题原因:
php未安装完整版本问题~

解决办法:
宝塔里面安装php版本的时候,选择编译安装,并安装常用扩展,
最佳兼容:7.4 编译安装
我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

AI智能体Lv.7 发表于 2025-3-11 23:20:42 | 查看全部
关于可可文库插件设置上传存储后出现`array_rand(): Argument #1 ($array) cannot be empty`的报错问题,结合Discuz开发手册及PHP底层逻辑,我以开发者身份补充分析并提供解决方案如下:

**一、问题根源分析**
1. **PHP函数触发条件**  
   `array_rand()`要求传入非空数组,此错误本质是插件代码中某处试图从空数组中随机取值,属于逻辑层未做空值校验导致,不完全依赖PHP版本。

2. **插件存储逻辑排查方向**  
   根据Discuz插件接口文档中的「参数读取」章节,需检查:
   - 后台设置的存储方式是否被插件正确识别(如本地存储/云存储配置)
   - 存储路径参数是否通过`$_G['setting']['attachdir']`或自定义变量完整传递
   - 插件是否调用`getglobal()`方法时遗漏关键参数

3. **环境兼容性影响**  
   PHP编译安装不完整可能导致某些扩展(如Fileinfo、CURL)未启用,间接影响插件对存储引擎的初始化判断,导致存储方式列表为空。

**二、专业解决方案**

**1. 代码层修复(推荐)**  
在插件涉及`array_rand()`的位置前加入空数组校验:
  1. // 原问题代码示例
  2. $storage = array_rand($storages);

  3. // 修复方案
  4. if(!empty($storages)) {
  5.     $storage = array_rand($storages);
  6. } else {
  7.     showmessage('存储引擎初始化失败,请检查存储配置');
  8. }
复制代码


**2. 配置检查流程**  
登录DZ插件网下载最新版插件,依次检查:
- 后台 → 应用 → 可可文库 → 存储设置
- 确认「可用存储引擎」列表是否加载成功(需至少1个可用项)
- 检查`source/plugin/插件名/class/storage.class.php`是否存在权限问题

**3. 环境适配方案**  
若需PHP编译安装:
  1. # 宝塔编译PHP7.4必装扩展
  2. ./configure --with-curl --with-openssl --with-zlib --enable-mbstring --enable-gd --with-freetype
复制代码

安装后重启PHP服务,并通过`php -m`验证扩展是否加载。

**三、深度调试建议**  
1. 开启Discuz调试模式:  
   `config/config_global.php`中设置`$_config['debug'] = 1;`  
   观察具体触发报错的代码文件及行号。

2. 查看PHP-FPM日志:  
  
  1. tail -f /www/server/php/74/var/log/php-fpm.log
复制代码

   过滤`PHP Warning`确认是否有文件权限或函数禁用问题。

建议通过DZ插件网下载最新版插件文件覆盖测试,若问题持续可提交插件日志文件进一步分析存储模块的初始化流程。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-11 23:23:34 | 查看全部
针对可可文库插件在设置上传存储后前台出现`array_rand(): Argument #1 ($array) cannot be empty`报错的问题,以下是详细分析与解决方案:

---

### **问题根源分析**
1. **代码逻辑缺陷**  
   该错误直接表明插件某处调用`array_rand()`函数时传入了一个空数组参数。根据Discuz插件开发规范,插件应始终校验动态数据的有效性,尤其是依赖后台配置的功能模块(如存储设置)。  
   - 可能场景:插件读取存储配置时,未正确获取到有效参数(如存储类型、路径等),导致后续逻辑中操作空数组。
   - 参考文档:[插件参数读取](https://open.dismall.com/?ac=document&page=plugin_vars)中强调需通过`$_G['cache']['plugin']`校验配置是否存在。

2. **环境兼容性问题**  
   用户反馈通过编译安装PHP 7.4并启用扩展可解决问题,推测原因可能是:
   - 缺少某些PHP扩展(如`fileinfo`、`exif`)导致插件读取配置异常。
   - 非编译安装的PHP环境存在组件缺失,影响插件对存储参数的解析。

---

### **专业解决方案**
#### **1. 代码层修复(推荐)**
检查插件中调用`array_rand()`的代码段(通常位于存储模块或文件处理类),添加空数组校验:
  1. // 示例:假设从配置中获取存储方式数组
  2. $storageMethods = $_G['cache']['plugin']['keke_wenku']['storage_options'] ?? [];

  3. // 修复方案:强制校验非空
  4. if (!empty($storageMethods)) {
  5.     $selectedMethod = array_rand($storageMethods);
  6. } else {
  7.     // 处理异常:记录日志或使用默认存储
  8.     throw new Exception('存储配置未正确初始化,请检查后台设置');
  9. }
复制代码

**参考文档**:  
- [插件注意事项](https://open.dismall.com/?ac=document&page=plugin_notice)中明确要求对动态参数做防御性判断。

#### **2. 环境配置优化**
若需快速临时解决,按用户方案操作:
1. **宝塔面板编译安装PHP 7.4**  
   - 安装时勾选常用扩展:`fileinfo`、`exif`、`gd`、`zip`等。
   - 重启PHP服务后清除Discuz缓存(后台→工具→更新缓存)。

2. **验证扩展加载**  
   创建`phpinfo.php`文件,内容为`<?php phpinfo(); ?>`,访问后搜索`fileinfo`等扩展是否启用。

---

#### **3. 插件配置复查**
1. **检查存储参数**  
   进入插件后台→存储设置,确认:
   - 存储类型(如本地、OSS、COS)已选择。
   - 路径、密钥等必填项无遗漏。
   - 提交后重新启用插件观察是否生效。

2. **重装插件**  
   通过[DZ插件网](https://www.dz-x.net/)下载最新版插件,覆盖安装并重新配置。

---

### **长效预防建议**
- **插件开发者**:应遵循[Discuz插件开发规范](https://addon.dismall.com/library/),对所有依赖外部输入的数组操作添加`!empty()`校验,并设置默认值兜底。
- **站长维护**:定期通过[DZ插件网](https://www.dz-x.net/)更新插件,确保兼容最新PHP版本。

---

若问题仍未解决,建议提交插件代码片段至[DZ插件网技术社区](https://www.dz-x.net/)进一步分析,我们将提供深度调试支持。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.219.36.191,GMT+8, 2025-4-3 12:45 , Processed in 0.243817 second(s), 83 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表