php多角色文件与卡密查询系统

发布时间:2026-08-02 阅读量:8 Go Gin Web开发
php多角色文件与卡密查询系统

一、系统概述

本系统是基于 Laravel 框架开发的多功能管理系统,集成了 Dcat Admin 作为后台管理界面,主要提供三大核心功能模块:

  1. 文件管理系统:提供完整的文件上传、管理、预览、下载和权限控制功能,支持本地、阿里oss和腾讯cos云存储,并可以切换。
  2. 卡密查询系统:实现基于卡密的访问控制和数据查询权限管理
  3. 会议管理系统:支持会议数据的导入、查询和管理

系统采用前后端分离的架构设计,前端使用 Vue.js + Element Plus 实现,后端通过 RESTful API 提供服务支持。

淘宝购买链接:

https://item.taobao.com/item.htm?id=1010918347460&spm=a213gs.v2success.0.0.530a48311ylPva

image.png

二、系统架构

1. 技术栈

  • 后端框架:Laravel 8.x
  • 管理界面:Dcat Admin
  • 前端技术:Vue.js、Element Plus、HTML5、CSS3
  • 数据库:MySQL 5.7+
  • 文件存储:本地存储、腾讯云COS、阿里云OSS(可无缝切换)
  • Web服务器:Nginx(推荐)/Apache(通过 PhpStudy 配置)
  • PHP版本:8.1+
  • 导入组件:Maatwebsite/Excel(Excel数据导入)
  • 地理位置:IP2Location(IP地址转地理位置)

2. 目录结构

cc.com/
├── app/
│   ├── Admin/          # Dcat Admin 管理后台代码
│   │   ├── Controllers/  # 后台控制器
│   │   │   ├── CardController.php       # 卡密管理控制器
│   │   │   ├── FileManagerController.php # 文件管理控制器
│   │   │   └── MeetingController.php    # 会议管理控制器
│   │   ├── Extensions/   # 后台扩展
│   │   │   ├── Importers/   # 数据导入器
│   │   │   │   └── MeetingImporter.php # 会议数据导入器
│   │   │   └── ImportButton.php        # 导入按钮组件
│   │   └── Repositories/  # 数据仓库
│   │       ├── Card.php       # 卡密数据仓库
│   │       └── Meeting.php    # 会议数据仓库
│   ├── Http/           # HTTP 层
│   │   └── Controllers/  # 前端控制器
│   │       └── HomeController.php # 主页控制器
│   ├── Models/         # 数据模型
│   │   ├── Card.php              # 卡密模型
│   │   ├── MediaFile.php         # 文件模型
│   │   ├── Meeting.php           # 会议模型
│   │   └── UserViewLog.php       # 用户访问日志模型
│   └── Services/       # 业务服务层
│       └── MediaPermissionService.php # 媒体权限服务
├── storage/            # 存储目录
│   └── app/media/      # 本地文件存储位置
├── public/             # 公共访问目录
├── routes/             # 路由配置
│   └── web.php         # Web路由定义
└── resources/          # 资源文件
    └── views/          # 视图文件

三、核心功能

1. 文件管理系统

1.1 文件上传

  • 支持多种文件类型上传(文档、图片、视频、音频等)
  • 自动生成唯一文件名,防止文件冲突
  • 上传进度显示
  • 文件大小限制控制
  • 支持文件夹创建和管理

1.2 文件管理

  • 文件夹层级管理(支持嵌套文件夹)
  • 文件重命名和移动
  • 文件删除功能
  • 文件批量操作(批量删除、批量移动)
  • 文件夹加密功能:支持为文件夹设置密码保护,增强安全性

1.3 文件预览

  • 图片文件直接预览(支持JPEG、PNG、GIF等格式)
  • PDF文档在线查看
  • 音频/视频文件HTML5播放器预览
  • 文本文件在线查看
  • 支持常见Office文档预览(Word、Excel等)

1.4 文件下载

  • 单文件下载
  • 支持权限验证的下载
  • 支持分享功能(Share_token和Share_expires_at)

1.5 权限控制

1.5.1 角色权限体系

系统采用基于角色的权限管理(RBAC)模式,支持对文件夹和文件设置细粒度的访问权限:

  • 角色类型
1.5.2 文件夹权限

支持为文件夹设置以下权限:

权限类型描述
查看允许查看文件夹内的文件列表
预览允许预览文件夹内文件的内容
上传允许向文件夹内上传新文件
下载允许下载文件夹内的文件
管理允许修改文件夹属性和管理子文件夹
1.5.3 文件权限

支持为单个文件设置独立的权限(可覆盖文件夹权限):

权限类型描述
查看允许在文件列表中看到该文件
预览允许在线查看文件内容(图片、PDF、视频等)
下载允许下载该文件到本地
分享允许生成分享链接
1.5.4 权限继承机制
  • 默认情况下,文件继承所在文件夹的权限
  • 可对单个文件设置独立权限以覆盖继承的权限
  • 子文件夹可继承父文件夹的权限设置
1.5.5 高级权限功能
  • 有效期设置:可设置权限的有效时间段
  • IP限制:可限制特定IP地址的访问权限
  • 密码保护:可为文件夹设置独立访问密码(FolderPassword模型)
  • 分享权限:支持生成带有效期的分享链接

2. 卡密查询系统

2.1 卡密管理(后台)

  • 卡密生成:支持手动创建卡密
  • 有效期设置:可设置卡密的使用有效期
  • 查询次数限制:可设置卡密的最大查询次数
  • 可查询字段控制:可配置卡密允许查询的字段(kfcx字段)
  • 状态管理:卡密激活/禁用控制
  • 备注功能:支持添加卡密备注信息

2.2 卡密验证(前台)

  • 用户输入卡密进行验证
  • 验证卡密有效性、有效期和状态
  • 验证成功后保存卡密信息到会话

2.3 查询功能

  • 基于卡密权限的查询功能
  • 支持按模式、日期、城市和参会人员进行搜索
  • 查询结果展示(包含会议模式、日期、城市、参会人员等)

3. 会议管理系统

3.1 数据导入

  • Excel批量导入:管理员可通过Excel文件批量导入会议数据
  • 智能数据解析:支持多种日期格式和参会人员分隔符
  • 数据验证:验证必填字段和数据格式
  • 导入结果反馈:显示导入成功和失败记录

3.2 数据查询

  • 多条件查询:支持按模式、日期、城市和参会人员进行搜索
  • 数据缓存:使用缓存提高查询性能
  • API支持:提供JSON格式的搜索结果API接口

四、技术实现细节

1. 文件存储策略

1.1 存储驱动概述

本系统支持通过修改.env文件中的配置来无缝切换不同的存储驱动,包括本地存储、阿里云OSS和腾讯云COS。所有文件操作都通过Laravel的Storage facade进行,确保代码与具体的存储实现解耦。

1.2 已配置的存储驱动

  • 本地存储 (local):默认存储驱动,文件存储在 storage/app/media 目录下
  • 腾讯云COS (cos):使用 overtrue/laravel-filesystem-cos
  • 阿里云OSS (oss):使用 larva/laravel-flysystem-oss 包(兼容Laravel 9)

1.3 存储驱动配置

配置文件路径config/filesystems.php

所有驱动都使用环境变量配置,便于灵活切换:

本地存储配置

本地存储是系统的默认存储驱动,无需额外配置。

# 默认存储驱动
FILESYSTEM_DISK=local
腾讯云COS配置
  1. 修改默认存储驱动:
FILESYSTEM_DISK=cos
  1. 配置腾讯云COS参数:
# 腾讯云COS配置
COS_REGION=ap-guangzhou # COS地域
COS_APP_ID=your_app_id # 腾讯云App ID(必填,真实ID)
COS_SECRET_ID=your_secret_id # 腾讯云Secret ID(必填,真实密钥ID)
COS_SECRET_KEY=your_secret_key # 腾讯云Secret Key(必填,真实密钥)
COS_BUCKET=your_bucket_name # COS存储桶名称(必填,不带数字APP_ID后缀)
COS_PREFIX= # 可选,文件前缀路径
  1. 注意事项
  2. 开发环境配置

配置文件更新说明
系统已对config/filesystems.php中的COS配置进行了优化:

'cos' => [
    'driver' => 'cos',
    'app_id' => env('COS_APP_ID'),
    'secret_id' => env('COS_SECRET_ID'),
    'secret_key' => env('COS_SECRET_KEY'),
    'region' => env('COS_REGION', 'ap-guangzhou'),
    'bucket' => env('COS_BUCKET'),
    'prefix' => env('COS_PREFIX', ''),
    'use_https' => false, // 开发环境下可以禁用HTTPS
    'guzzle' => [
        'timeout' => 60,
        'connect_timeout' => 60,
        'verify' => false, // 开发环境下可以禁用SSL验证
    ],
],
阿里云OSS配置
  1. 修改默认存储驱动:
FILESYSTEM_DISK=oss
  1. 配置阿里云OSS参数:
# 阿里云OSS配置
OSS_ACCESS_KEY_ID=your_access_key_id # 阿里云Access Key ID
OSS_ACCESS_KEY_SECRET=your_access_key_secret # 阿里云Access Key Secret
OSS_BUCKET=your_bucket_name # OSS存储桶名称
OSS_ENDPOINT=oss-cn-hangzhou.aliyuncs.com # OSS Endpoint
OSS_IS_CNAME=false # 是否使用CNAME
OSS_DOMAIN= # 可选,自定义域名
OSS_PREFIX= # 可选,文件前缀路径

1.4 驱动切换机制

切换方法

只需修改 .env 文件中的 FILESYSTEM_DISK 变量:

# 切换到本地存储
FILESYSTEM_DISK=local

# 切换到腾讯云COS
FILESYSTEM_DISK=cos

# 切换到阿里云OSS
FILESYSTEM_DISK=oss
切换后效果
  • ✅ 新上传的文件将存储在新的存储驱动中
  • ✅ 已上传的文件仍可通过数据库记录正常访问
  • ✅ 所有文件操作(上传、下载、预览、删除)自动使用新驱动
  • ✅ 文件URL生成自动适配新驱动

1.5 文件操作方法

FileManagerController 中的存储操作
操作代码位置方法存储驱动使用
上传文件第498行uploadStorage::disk(config('filesystems.default'))->putFileAs()
删除文件第598行、620行destroyStorage::disk(config('filesystems.default'))->delete()
文件存在性检查第659行downloadStorage::disk(config('filesystems.default'))->exists()
文件下载第666行downloadStorage::disk(config('filesystems.default'))->download()
公共文件下载第990行publicDownloadStorage::download()
公共文件URL第1015行publicPreviewStorage::url()
MediaFile 模型中的存储适配
方法代码位置功能
getFullPath第21-32行根据当前存储驱动返回文件路径或URL
getUrl第35-39行获取当前驱动的文件URL
getDiskUrl第42-46行从指定驱动获取文件URL

MediaFile模型中的存储适配实现:

public function getFullPath()
{
    $disk = config('filesystems.default');
    
    // 根据存储驱动返回不同路径格式
    if (Storage::disk($disk)->getDriver() instanceof \League\Flysystem\Local\LocalFilesystemAdapter) {
        return Storage::path('media/' . $this->path); // 本地存储:文件系统路径
    }
    
    return Storage::url('media/' . $this->path); // 云存储:URL路径
}

1.6 功能兼容性

支持的文件操作
  • ✅ 文件上传(单文件)
  • ✅ 文件下载
  • ✅ 文件预览
  • ✅ 文件删除
  • ✅ 文件夹管理
  • ✅ 文件分享
  • ✅ 权限控制
存储驱动适配
  • ✅ 本地存储:支持所有文件操作
  • ✅ 腾讯云COS:支持所有文件操作
  • ✅ 阿里云OSS:支持所有文件操作

1.7 注意事项

  1. 安装驱动包
  2. 无缝切换
  3. 文件权限

2. 文件权限验证

2.1 权限数据模型设计

系统使用 MediaPermission 模型实现细粒度的权限控制:

class MediaPermission extends Model
{
    protected $fillable = [
        'media_file_id', 'role_id', 'user_id',
        'can_view', 'can_preview', 'can_download', 'can_upload', 'can_share'
    ];
    
    // 关联关系
    public function mediaFile() { return $this->belongsTo(MediaFile::class); }
    public function role() { return $this->belongsTo(Role::class); }
    public function user() { return $this->belongsTo(Administrator::class); }
}

2.2 权限检查实现

FileManagerController 中实现权限控制:

public function preview($id)
{
    $file = MediaFile::findOrFail($id);
    $user = auth('admin')->user();
    
    if (!$file->checkPermission($user, 'can_preview')) {
        return response()->json(['message' => '您没有权限预览此文件'], 403);
    }
    
    // 处理文件预览...
}

2.3 MediaPermissionService 实现

系统使用 MediaPermissionService 提供集中的权限检查服务:

class MediaPermissionService
{
    public static function checkPermission($fileId, $permissionType, $user = null)
    {
        if (!$user) $user = Auth::user();
        $file = MediaFile::findOrFail($fileId);
        
        // 公开分享且未过期
        if ($file->is_public && $file->share_token && 
            (!$file->share_expires_at || !$file->share_expires_at->isPast())) {
            return true;
        }
        
        // 管理员有所有权限
        if ($user->isAdministrator()) return true;
        
        // 检查角色权限
        $userRoleIds = $user->roles->pluck('id')->toArray();
        $rolePermission = MediaPermission::where('media_file_id', $fileId)
            ->whereIn('role_id', $userRoleIds)->first();
            
        if ($rolePermission) return $rolePermission->{'can_' . $permissionType};
        
        // 自己上传的文件默认有所有权限
        if ($file->user_id == $user->id) return true;
        
        return false;
    }
}

3. 文件预览实现

视频文件使用 HTML5 Video 元素实现预览:

<video v-if="file.extension === 'mp4'" controls style="width: 100%; height: auto;">
  <source :src="file.url" type="video/mp4">
  Your browser does not support HTML5 video.
</video>

后端通过 preview 方法支持视频流式传输:

// 视频文件特殊处理
if (Str::startsWith($file->mime_type, 'video/')) {
    return response()->stream(function () use ($file) {
        $stream = fopen($file->getFullPath(), 'rb');
        fpassthru($stream);
        fclose($stream);
    }, 200, [
        'Content-Type' => $file->mime_type,
        'Content-Length' => $file->size
    ]);
}

4. 唯一文件名生成

// 生成唯一文件名
$origName = $request->file('file')->getClientOriginalName();
$name = pathinfo($origName, PATHINFO_FILENAME);
$ext = pathinfo($origName, PATHINFO_EXTENSION);
$filename = Str::slug($name) . '_' . time() . '_' . Str::random(8) . '.' . $ext;

5. 卡密系统实现

// 卡密验证方法
public static function verifyCard($cardNumber)
{
    $card = self::where('card_number', $cardNumber)->first();
    
    if (!$card) return ['success' => false, 'message' => '卡密不存在'];
    if ($card->isactive !== 'true') return ['success' => false, 'message' => '卡密已禁用'];
    if ($card->enddate && $card->enddate < date('Y-m-d')) return ['success' => false, 'message' => '卡密已过期'];
    
    return ['success' => true, 'message' => '验证成功', 'card' => $card];
}

6. 数据导入实现

// Excel数据导入处理器
public function collection(Collection $collection)
{
    $collection->each(function ($row, $index) {
        try {
            // 解析Excel行数据
            $mode = isset($row[0]) ? trim($row[0]) : '';
            $dateStr = isset($row[1]) ? trim($row[1]) : '';
            $city = isset($row[2]) ? trim($row[2]) : '';
            $names = isset($row[3]) ? trim($row[3]) : '';
            
            // 验证必填字段
            if (empty($mode) || empty($dateStr) || empty($city) || empty($names)) {
                throw new Exception('必填字段不能为空');
            }
            
            // 创建记录
            Meeting::create([
                'mode' => $mode,
                'date' => $this->parseDate($dateStr),
                'city' => $city,
                'names' => $names,
            ]);
            
            $this->successCount++;
        } catch (\Exception $e) {
            $this->errorCount++;
            $this->errors[] = "第 " . ($index + 2) . " 行导入失败: " . $e->getMessage();
        }
    });
}

五、系统使用指南

1. 管理员操作

后台登录

  1. 访问 http://cc.com/admin
  2. 使用管理员账号密码登录

文件管理

  1. 在后台左侧菜单选择「文件管理」
  2. 可进行文件上传、重命名、移动、删除等操作
  3. 设置文件的预览和下载权限

存储驱动管理

  1. 打开项目根目录下的 .env 文件
  2. 修改 FILESYSTEM_DISK 变量切换存储驱动:
# 本地存储
FILESYSTEM_DISK=local

# 腾讯云COS
FILESYSTEM_DISK=cos

# 阿里云OSS
FILESYSTEM_DISK=oss
  1. 保存文件,新上传的文件将使用新的存储驱动

云存储配置

确保已在 .env 文件中配置了正确的云存储参数:

腾讯云COS配置示例:

COS_REGION=ap-guangzhou
COS_APP_ID=1234567890
COS_SECRET_ID=AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
COS_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
COS_BUCKET=my-bucket

阿里云OSS配置示例:

OSS_ACCESS_KEY_ID=LTAIxxxxxxxxxxxxxxxx
OSS_ACCESS_KEY_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OSS_BUCKET=my-bucket
OSS_ENDPOINT=oss-cn-hangzhou.aliyuncs.com

用户管理

  1. 在后台左侧菜单选择「用户管理」
  2. 添加、编辑用户信息
  3. 分配用户角色和权限

卡密管理

  1. 在后台左侧菜单选择「卡密管理」
  2. 添加新卡密,设置有效期、查询次数限制和可查询字段
  3. 启用/禁用卡密,查看卡密使用情况
  4. 支持批量生成和导出卡密

数据导入

  1. 在后台左侧菜单选择「会议管理」或「数据管理」
  2. 点击「导入数据」按钮
  3. 选择Excel文件(第一行为表头,从第二行开始为数据)
  4. 检查导入结果,处理导入失败的记录

2. 普通用户操作

前台登录

  1. 访问 http://cc.com/login
  2. 使用普通用户账号密码登录

文件查看

  1. 登录后可查看有权限的文件
  2. 点击文件可进行预览或下载
  3. 支持按文件夹层级浏览文件

卡密查询

  1. 访问 http://cc.com/card-login
  2. 输入有效的卡密,点击「验证」按钮
  3. 验证成功后进入查询页面

数据查询

  1. 在查询页面选择查询条件:
  2. 点击「查询」按钮查看结果
  3. 查询结果将显示符合条件的会议记录

六、系统安全

1. 文件安全

  • 文件存储在非公共目录 storage/app/media(本地存储)
  • 文件访问必须通过认证路由
  • 实现了严格的权限检查机制
  • 云存储文件通过签名URL访问,确保安全性

2. 系统安全

  • 使用 Laravel 内置的 CSRF 防护
  • 密码使用 bcrypt 加密存储
  • 路由访问控制和中间件验证

七、部署与配置

1. 本地环境配置(Windows + PhpStudy)

PhpStudy 配置

  1. 安装 PHP 8.2.9nts
  2. 启用必要的 PHP 扩展:openssl, pdo, mbstring, tokenizer
  3. 配置虚拟主机,域名为 cc.com
  4. 设置文档根目录为 cc.com/public

Windows Hosts 文件配置

为了能够从本地机器访问 cc.com 域名,需要配置 Windows hosts 文件:

步骤1:以管理员身份打开记事本
  1. Windows Key + X
  2. 选择 "Windows PowerShell (Admin)"
  3. 输入 notepad C:\Windows\System32\drivers\etc\hosts 并按 Enter
步骤2:添加主机条目

在文件末尾添加以下行:

127.0.0.1 cc.com www.cc.com
步骤3:保存并测试
  1. 保存文件 (Ctrl+S)
  2. 关闭记事本
  3. 在浏览器中打开 http://cc.com 测试配置
故障排除
  • 如果无法保存文件,请确保以管理员身份运行记事本
  • 如果域名仍然无法解析,在命令提示符中运行 ipconfig /flushdns 清除 DNS 缓存
  • 确保 PhpStudy 的 Apache/Nginx 服务正在运行

Laravel 配置

  1. 配置 .env 文件中的数据库连接
  2. 配置站点信息参数:
  3. 根据需要配置存储驱动

IDE 集成配置

为了确保IDE与PhpStudy的PHP版本正确集成,按照以下步骤配置:

步骤1:定位PhpStudy PHP执行文件

PHP 8.2.9nts执行文件通常位于:

D:\phpstudy_pro\Extensions\php\php8.2.9nts\php.exe
步骤2:Visual Studio Code配置
  1. 安装PHP Intelephense扩展
  2. Ctrl+Shift+P 并选择 "Preferences: Open Settings (JSON)"
  3. 添加以下配置:
{
    "php.validate.executablePath": "D:\\phpstudy_pro\\Extensions\\php\\php8.2.9nts\\php.exe",
    "php.executablePath": "D:\\phpstudy_pro\\Extensions\\php\\php8.2.9nts\\php.exe"
}
步骤3:PhpStorm配置
  1. 进入 File > Settings > PHP
  2. 点击 "CLI Interpreter" 旁边的 ...
  3. 点击 + 并选择 "Local Path"
  4. 设置PHP执行文件路径为:
D:\phpstudy_pro\Extensions\php\php8.2.9nts\php.exe
  1. 点击 "OK" 保存
步骤4:Composer配置

如果Composer尚未配置为使用PhpStudy的PHP版本:

  1. 以管理员身份打开PowerShell
  2. 运行以下命令:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
"D:\phpstudy_pro\Extensions\php\php8.2.9nts\php.exe" composer-setup.php
"D:\phpstudy_pro\Extensions\php\php8.2.9nts\php.exe" -r "unlink('composer-setup.php');"
move composer.phar "D:\phpstudy_pro\Extensions\php\php8.2.9nts\composer.phar"
  1. D:\phpstudy_pro\Extensions\php\php8.2.9nts 添加到Windows环境变量PATH中

2. Linux 服务器部署 (宝塔面板)

2.1 环境准备

服务器要求
  • 操作系统:CentOS 7.x/8.x 或 Ubuntu 18.04/20.04
  • 内存:2GB 或以上
  • 硬盘:20GB 或以上
  • 网络:可访问互联网
宝塔面板安装

执行以下命令安装宝塔面板:

# CentOS 系统
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

# Ubuntu/Debian 系统
dpkg -i libcurl4-openssl-dev && apt-get install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

安装完成后,记录面板访问地址、用户名和密码。

2.2 一键安装LNMP环境

登录宝塔面板

访问安装完成后提供的面板地址,使用用户名和密码登录。

安装Web环境

在宝塔面板中,点击「软件商店」,选择「一键部署」:

  1. 选择「LNMP」环境(Linux + Nginx + MySQL + PHP)
  2. 选择以下版本:
  3. 点击「一键安装」,等待安装完成(约5-10分钟)

2.3 创建网站

添加站点
  1. 在面板左侧菜单选择「网站」→「添加站点」
  2. 填写站点信息:
  3. 点击「提交」,完成站点创建
配置运行目录
  1. 点击刚创建的站点,进入「站点配置」→「网站目录」
  2. 修改「运行目录」为 public
  3. 点击「保存」
配置伪静态
  1. 进入「站点配置」→「伪静态」
  2. 选择「Laravel 5」伪静态规则
  3. 点击「保存」

Laravel伪静态规则内容:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

2.4 上传代码

上传源码包

将源码包上传到站点根目录下,解压:

  1. 在宝塔面板中,点击站点「文件」
  2. 上传源码ZIP文件到 www/wwwroot/cc.com 目录
  3. 解压ZIP文件,确保所有文件直接位于 www/wwwroot/cc.com 目录下
设置目录权限
  1. 在宝塔面板中,右键点击 www/wwwroot/cc.com 目录
  2. 选择「权限」
  3. 设置以下权限:
  4. 点击「保存」

2.5 配置Laravel环境

编辑.env文件
  1. 在宝塔面板中,点击站点「文件」
  2. 找到并编辑 .env 文件
  3. 更新以下配置:
# 应用配置
APP_NAME="Laravel File Manager"
APP_ENV=production
APP_KEY=base64:your_app_key_here
APP_DEBUG=false
APP_URL=http://cc.com

# 数据库配置
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cc_com # 与创建站点时的数据库名称一致
DB_USERNAME=cc_com # 与创建站点时的数据库用户名一致
DB_PASSWORD=your_database_password # 与创建站点时的数据库密码一致

# 文件存储配置
FILESYSTEM_DRIVER=local
清理缓存

执行以下命令清理所有缓存:

# 清理配置缓存
php artisan config:clear

# 清理路由缓存
php artisan route:clear

# 清理视图缓存
php artisan view:clear

# 清理应用缓存
php artisan cache:clear

# 清理编译后的类文件
php artisan clear-compiled
导入数据库

站点根目录下有数据库sql.tar.gz文件,将其导入到数据库中。

2.6 运行和测试

访问网站

在浏览器中访问您的域名(如 http://cc.com),如果能看到Laravel欢迎页面或系统登录页面,说明部署成功。

后台登录

访问 http://cc.com/admin 登录Dcat Admin后台管理界面。

测试功能
  • 测试文件上传功能
  • 测试文件下载功能
  • 测试卡密查询功能
  • 测试数据导入功能

2.7 常见问题排查

500错误
  • 检查PHP版本是否为8.1
  • 检查.env文件配置是否正确
  • 检查目录权限是否正确设置
  • 查看Laravel日志:storage/logs/laravel.log
数据库连接错误
  • 检查.env文件中的数据库配置
  • 确认数据库用户名和密码是否正确
  • 确认数据库已创建并可访问
文件上传失败
  • 检查storage/app/media目录是否存在
  • 检查目录权限是否为775
  • 检查PHP上传限制设置
伪静态配置错误
  • 确认已选择Laravel 5伪静态规则
  • 检查Nginx配置是否正确

3. 手动Linux部署(可选)

如果不使用宝塔面板,也可以手动部署:

3.1 存储目录配置

# 创建存储目录
mkdir -p storage/app/media
chown -R www-data:www-data storage/
chmod -R 755 storage/

3.2 缓存清理(解决路径问题)

php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan cache:clear
php artisan clear-compiled
php artisan optimize

八、常见问题与解决方案

1. 文件下载报错:FileNotFoundException

  • 检查存储目录是否存在该文件
  • 确认文件路径配置正确
  • 验证存储驱动配置是否正确

2. 视频预览失败

  • 检查视频文件格式是否支持
  • 确认文件权限设置为可预览
  • 检查服务器是否支持视频流传输

3. 权限设置不生效

  • 检查用户角色权限配置
  • 确认中间件验证是否正确

4. 云存储无法上传文件

  • 检查云存储参数配置是否正确
  • 验证云存储服务是否正常
  • 检查网络连接是否畅通

5. 存储驱动切换后文件无法访问

  • 确保旧存储仍然可用
  • 检查文件路径配置是否正确
  • 验证新存储驱动的权限设置

九、系统优化建议

  1. 性能优化
  2. 安全优化
  3. 功能扩展
  4. 存储优化

十、总结

本系统提供了完整的文件管理解决方案,包括文件上传、管理、预览、下载和权限控制功能,并支持本地存储、腾讯云COS和阿里云OSS三种存储驱动的无缝切换。

存储系统的优势在于:

  1. 无侵入性:所有文件操作都通过 Laravel Storage facade 进行,无需修改业务代码即可切换存储驱动
  2. 灵活配置:使用环境变量配置存储参数,便于不同环境部署
  3. 完整适配:所有文件功能都支持三种存储驱动
  4. 无缝切换:切换驱动只需修改一个环境变量

系统采用了安全的文件存储策略,确保文件的安全性和保密性。通过合理的架构设计和技术实现,系统具有良好的性能和可扩展性,能够满足不同规模的文件管理需求。

系统支持在 Windows 本地环境和 Linux 服务器上部署,提供了详细的配置和部署指南。通过定期维护和优化,可以确保系统的稳定运行和良好的用户体验。

温馨提示

知识产权声明:本软件已获国家版权局软件著作权登记(登记号:2022SR0558725),受《计算机软件保护条例》保护。未经书面授权,严禁对本软件进行反向工程、反编译、破解或任何形式的篡改。侵权必究。

官方指引:本文档为官方安装部署说明,仅适用于当前发布版本,后续版本请以最新官方文档为准。

环境要求:安装前请确认操作系统版本、运行环境(如 .NET、Java 等)及硬件配置满足软件运行要求,避免因环境不兼容导致异常。

操作风险与免责:安装配置涉及防火墙、注册表或环境变量等系统级变更,建议由具备相关经验的技术人员操作。因用户未严格遵循本官方指引或操作不当导致的任何数据丢失、系统异常或其他损失,我方不承担相关责任。如遇问题,请及时联系技术支持。

反馈渠道:如有未覆盖的问题,欢迎通过客服反馈,我们将持续更新与改进。

版本记录:最后更新于 2026-08-07

AI

智能问答助手

基于本手册内容回答问题
AI
你好,我是本手册的 AI 助手,有任何安装问题可以直接问我。
← 返回手册列表

相关手册