FleetHub 文档

常见问题

FleetHub 是否运行最便宜的 Hostinger Single 计划?

是的 — FleetHub 与 Hostinger Single(约 2.99 美元/月) 完全兼容。 Single 计划包括 PHP 8.3、MySQL、Cron Jobs 和免费 SSL。无需 SSH、Composer 或命令行。请参阅安装 Hostinger 部分。

我需要技术技能来安装吗?

不是。 Web 安装程序 处理一切:请求测试、数据库、迁移和管理帐户创建。只需上传文件,转到/install并按照说明操作即可。

预定电子邮件(合规/维护警报)如何运作?

FleetHub 使用 Laravel 调度程序。你只需要配置一个cron job每分钟运行一次; Laravel 自动按时运行每个任务。在 cPanel 上:高级 → Cron 作业。在 Hostinger 上:hPanel → 高级 → Cron 作业。如果主机没有 cron,请在应用程序中使用带有 cron-job.org 的 Cron URL。

支持哪些折旧方法?

三种方法:直线余额递减生产单位(以时钟公里为单位)。车辆价值每月更新一次并包含在 TCO 表中。

QR 扫描仪可以在手机上使用吗?

是的——司机和管理人员使用浏览器摄像头通过html5-qrcode扫描车辆二维码。快速扫描(燃料、时钟、故障)需要记录。需要HTTPS

我可以在没有代码的情况下添加私有字段吗?

有。 管理→自定义字段允许添加无限属性、按车辆类型标记、强制标记和拖放排序。

FleetHub 支持多少种语言?

11 种语言:英语、越南语、西班牙语、法语、德语、中文、日语、葡萄牙语 (BR)、俄语、阿拉伯语 (RTL) 和印地语。在管理→翻译管理翻译。

FleetHub 可以安装在共享 cPanel 主机上吗?

是的 — FleetHub 在 共享 cPanel 托管 上运行,具有 PHP 8.2+、MySQL 和 Cron 作业。服务器上不需要 Composer 或 Node.js。请参阅安装 cPanel 部分。

如何重塑 FleetHub 品牌(登录页面、选项卡标题和颜色)?

FleetHub 可以从 admin 完全重新命名 — 无需更改代码或 npm run build设置→品牌→应用程序名称下的登录徽标、页脚、徽章和选项卡标题。选项卡外观允许自定义浅色/深色。

品牌重塑清单:更新应用程序名称→按语言编辑auth.login_subtitle→在设置→外观自定义颜色。

快速参考:

项目示例如何更改
标志和名称ABC车队设置→品牌→应用程序名称
登录字幕输入信息访问FleetHub管理 → 翻译auth.login_subtitle
浏览器选项卡标题应用程序名称设置→品牌→应用程序名称
应用颜色自定义调色板设置→外观

1。徽标和名称:登录管理→设置→品牌→更新应用程序名称(如有必要,请上传徽标)→保存。

2。登录字幕:管理→翻译编辑auth.login_subtitle或文件lang/{locale}/auth.php.

3。应用程序颜色:设置→外观 - 浅色和深色的单独颜色配置。点击保存外观即可应用。

概述

FleetHub 是面向公司内部车辆(50–200 辆)的企业车队资产管理系统。基于 Laravel 11、Vue 3 和 Tailwind CSS 构建 — 涵盖车辆、驾驶员、用车申请、带损伤标注的交接、燃油日志、费用、TCO 分析、合规跟踪和车队健康评分。适用于出租车或汽车租赁业务。

快速扫描二维码

扫描车辆二维码以记录燃油、更新时钟或报告问题——针对驾驶员的移动优化。

总拥有成本表

车辆和车队的总拥有成本——购买、燃油、维护、保险等。

车辆交接

导入/导出包含 2D 损坏图、清单、照片、签名和 PDF 报告的移交。

车队健康评分

每日评分及详细信息——逾期维护、过期合规性、燃油违规行为。

合规追踪

保险、登记、路税、执照、驾驶执照 — 14/30/7/1 天提醒。

车队报告

7 内置报告、图表、Excel 和 PDF 导出。

需要服务器

  • PHP 8.2 或更高版本(推荐 8.3)
  • MySQL 5.7+ 或 MariaDB 10.3+
  • Composer 2.x(仅限本地开发 - 共享主机不需要)
  • Node.js 18+ 和 npm 9+(仅适用于本地前端构建)
  • Web 服务器:Apache 或 Nginx

所需的 PHP 扩展

  • OpenSSL, PDO, PDO_MySQL, Mbstring, Tokenizer, XML, Ctype, JSON, GD, Fileinfo

驱动能力

最少约 200 MB。车辆照片、燃油收据、移交照片和合规文件的额外规定。

环境

选项 A — Web 安装程序(推荐)

  1. 将项目文件上传到网络服务器。
  2. 将文档根目录指向文件夹public/
  3. 授权:storage/bootstrap/cache/必须可写(chmod 775)。
  4. .env.example复制到.env并设置APP_KEY(如果SSH可用,则运行php artisan key:generate,或参见cPanel设置→步骤5)。
  5. 在浏览器中访问https://yourdomain.com/install
  6. 按照向导操作 — 要求 → 数据库 → 迁移 → 管理员帐户 → 完成。选择包括演示数据以加载示例数据(请参阅用户和角色)。

选项 B — 安装 CLI

# 1.安装依赖
composer install --no-dev --optimize-autoloader
npm install
npm run build

# 2.配置环境
cp .env.example .env
php artisan key:generate

# 3.编辑.env设置DB信息
# DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD

# 4. 创建表并播种初始数据
php artisan migrate --seed

# 5. 创建用于上传的符号链接存储
php artisan storage:link

# 6. 生产缓存配置
php artisan config:cache
php artisan route:cache
php artisan view:cache

# 7. 标记已安装
echo "Installed" > storage/installed.lock
Web 服务器配置: 文档根必须指向public/。 Apache 使用内置的 .htaccess。 Nginx 参见Laravel 部署指南

向导第 2 步 — 数据库配置

当向导进行到第2步时,您需要在主机控制面板中输入创建的数据库的MySQL连接信息。数据库必须已存在(可以为空 - 下一步将创建表)。

学校默认/示例笔记
Host127.0.0.1适用于 99% 的共享主机(Hostinger、cPanel、Plesk)。保持不变,除非主机提供自己的 MySQL 主机名(托管数据库,如 AWS RDS、DigitalOcean 托管数据库)。
Port3306标准 MySQL 端口。仅当提供商使用不同的端口时才进行更改(罕见)。
数据库名称uXXXXX_fleethub全名显示在主机控制面板中。大多数共享主机都有一个根据用户 ID 的前缀(例如 Hostinger:u287094729_fleethub)。
登录名uXXXXX_fleethubMySQL帐户具有上述数据库的权限。 请勿使用root — 不允许共享主机。
密码(您的数据库密码)创建MySQL用户时设置或复制的密码。大多数主机在创建时仅出现一次 - 如果未保存,请使用“查看/重置”。

在哪里可以根据每种托管类型找到数据库信息

  • Hostinger: hPanel → 数据库 → 管理 → 单击数据库。详细信息页面显示姓名、用户名和“显示密码”按钮。
  • cPanel: cPanel → MySQL 数据库。上面是数据库列表,下面是用户列表。如有必要,请使用“更改密码”。
  • Plesk: Plesk → 数据库 → 单击数据库名称。详细信息页面显示凭据并具有密码重置按钮。
  • DirectAdmin: DirectAdmin → MySQL 管理 → 单击数据库。凭据和密码重置位于详细信息页面上。
  • 外部/托管数据库: AWS RDS、DigitalOcean 托管数据库等。使用云控制台中的自定义主机名、端口(通常为3306,但应检查)、数据库名称、用户和密码。确保服务器的 IP 在数据库防火墙中列入白名单。

常见错误及其修复方法

错误信息原因和修复
SQLSTATE[HY000] [1045] Access denied用户名或密码错误,或者用户没有此数据库的权限。仔细检查拼写(包括共享主机上的用户前缀)。如果不确定,请在主机控制面板中重置密码。
SQLSTATE[HY000] [1049] Unknown database数据库名称错误,或者您没有在控制面板中创建数据库。首先创建它,然后重新输入确切的名称(包括前缀)。
SQLSTATE[HY000] [2002] Connection refused无法连接到 MySQL 服务器。检查主机和端口。在共享主机上尝试使用 localhost 而不是 127.0.0.1,反之亦然。对于托管数据库,请确保服务器 IP 已列入白名单。
SQLSTATE[42S02] Base table not found: sessions当表存在之前在.env中设置SESSION_DRIVER=databaseCACHE_STORE=database时发生。编辑.env,将两者更改为file,保存,然后重新加载向导。如果需要,您可以在安装完成后将其改回database
could not find driver缺少或禁用 PHP pdo_mysql 扩展。在主机控制面板中启用。在cPanel上:MultiPHP INI编辑器→扩展选择PHP版本→扩展。在 Hostinger 上:hPanel → 高级 → PHP 配置 → PHP 扩展选项卡。
提示: 主机和端口字段预先填充了最常见的值(127.0.0.13306)——在共享主机上保持相同。您只需输入数据库名称、用户名和密码。按测试&保存 → 检查连接并转到步骤 3。

本地主机(本地开发)

在部署到生产之前在计算机上运行 FleetHub 以进行测试或开发的快速指南。选择适合您的操作系统的环境。

推荐: Laravel Herd 是 macOS 和 Windows 上最快的选项 - 不需要 Docker,不需要手动配置 Apache/MySQL。如果您熟悉更传统的堆栈,XAMPP 和 Laragon 是不错的免费选择。

选项 1 — Laravel Herd(推荐,macOS 和 Windows)

Laravel Herd 是 Laravel 团队的官方本地环境——免费、原生、无 Docker。包括 PHP 8.2/8.3/8.4、Nginx 和(在 Herd Pro 中)MySQL/Redis。

  1. herd.laravel.com 下载并安装 Laravel Herd
  2. 将 FleetHub 项目文件夹设置为 ~/Herd/ (macOS) 或 %USERPROFILE%\Herd\ (Windows)。 Herd 创建域 .test — 例如 http://fleethub.test
  3. 打开Herd → Sites,确认PHP版本为8.2或8.3。右键单击站点 → Secure 以启用 HTTPS(二维码扫描器所需)。
  4. 创建 MySQL 数据库。使用Herd Pro,转到服务→MySQL→在TablePlus中打开。如果您没有 Pro,请安装 MySQL Community 或使用 SQLite(DB_CONNECTION=sqlitetouch database/database.sqlite)。
  5. .env.example复制到.env,填写DB信息,然后在项目根运行php artisan key:generate
  6. 在浏览器中打开 http://fleethub.test/install 并按照向导操作。

选项 2 — XAMPP(Windows、macOS、Linux)

XAMPP 捆绑 Apache、MySQL/MariaDB 和 PHP。免费、跨平台。请务必选择版本PHP 8.2或更高版本

  1. apachefriends.org 下载 XAMPP 8.2+ 并安装。
  2. 将 FleetHub 项目复制到 C:\xampp\htdocs\FleetHub\ (Windows) 或 /Applications/XAMPP/htdocs/FleetHub/ (macOS)。
  3. 打开XAMPP控制面板并启动ApacheMySQL。如果端口被占用,进入Config→service.conf将Apache切换为8080。
  4. 转到http://localhost/phpmyadminNew→创建名为fleethub、排序规则为utf8mb4的数据库。
  5. 在项目文件夹中:将.env.example复制到.env,设置DB_DATABASE=fleethubDB_USERNAME=root,将DB_PASSWORD留空(XAMPP默认)。运行php artisan key:generate
  6. 访问http://localhost/FleetHub/public/install运行安装向导。
没有/public/:的紧凑URL在C:\xampp\apache\conf\extra\httpd-vhosts.conf中创建虚拟主机,将DocumentRoot指向项目的文件夹public/,然后将127.0.0.1 fleethub.local添加到hosts文件中。

选项 3 — Laragon (Windows)

Laragon 是一个专为 Laravel 设计的便携式 Windows 堆栈 — 包括自行生成的虚拟主机、紧凑的 URL、MySQL/MariaDB 和 HeidiSQL。

  1. larragon.org 下载 Laragon Full 并安装。
  2. 在 Laragon 中:菜单 → PHP → 版本 — 切换到 PHP 8.2 或 8.3
  3. 将 FleetHub 项目复制到 C:\laragon\www\FleetHub\
  4. 全部启动。 Laragon 创建自己的虚拟主机:http://fleethub.test(指向文件夹public/)。
  5. 打开HeidiSQL(已包含)→ 创建数据库fleethub。默认信息:用户root,密码为空。
  6. 使用数据库信息编辑.env,运行php artisan key:generate,然后访问http://fleethub.test/install

选项 4 — 现有 PHP 服务器(无需 Web 服务器)

最简单的选择:Laravel 附带 artisan serve,它启动 PHP 开发服务器。不需要 Apache 或 Nginx。最适合快速测试。

# 安装依赖并配置
cd /path/to/FleetHub
composer install
cp .env.example .env
php artisan key:generate

# 运行迁移并播种初始数据
php artisan migrate --seed

# 启动开发服务器
php artisan serve
# 然后访问: http://127.0.0.1:8000/install

运行 localhost 时的常见问题

QR 扫描仪无法打开 http:// 上的相机

浏览器摄像头 API 需要 HTTPS,但有一个例外:http://localhosthttp://127.0.0.1 被视为安全上下文。如果您通过 LAN IP(例如http://192.168.1.10)访问 FleetHub,摄像机将被拒绝。使用 localhost 进行开发,或通过 Herd / mkcert 启用 HTTPS。

存储权限被拒绝 (macOS / Linux)

如果您在应用程序日志或缓存时遇到错误,请修复权限:chmod -R 775 storage bootstrap/cache。在 Windows 上通常不需要。

端口正在使用中

如果端口 8000 已被其他应用程序占用,请使用其他端口:

php artisan serve --port=8001

在本地测试电子邮件

真正的 SMTP 通常在本地主机上不可用。两个安全的选择:(1)将MAIL_MAILER=log放入.env——电子邮件在storage/logs/laravel.log登录而不是发送;或 (2) 使用 Mailtrap / MailHog 将外发电子邮件捕获到假收件箱中。

MAIL_MAILER=log
# 所有电子邮件都会记录到 storage/logs/laravel.log

前端资源(Vite / Tailwind)

FleetHub 的 Vue/Tailwind 前端已内置到软件包中。如果您编辑 Vue 组件或 Tailwind 配置,则需要 Node.js 18+:

npm install
npm run dev    # 开发时热重载
npm run build  # 构建生产(在部署之前运行)

在 Hostinger Single(共享主机)上部署

建议没有 VPS 或技术经验的人使用此方法。 FleetHub 与最便宜的 Hostinger 单一虚拟主机 计划(约 2.99 美元/月)完全兼容。无需 SSH、Composer 或命令行 — Single 附带本机 cron 作业、PHP 8.3 和免费 SSL。

测试于: Hostinger Single、Premium、Business 计划(PHP 8.2+、MySQL 5.7+、所有级别均提供原始 Cron 作业)。

第 1 步 — 准备托管

  1. 登录Hostinger hPanel
  2. 前往托管→管理查看您的域名。
  3. 通过高级→PHP配置将PHP版本设置为8.2或8.3
  4. 确保启用这些 PHP 扩展(通常默认情况下):
    • OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo

第 2 步 — 创建 MySQL 数据库

  1. 在 hPanel 中,转到 数据库 → MySQL 数据库
  2. 创建新数据库
  3. 记录这 3 个值:
    • 数据库名称 — 例如u123_FleetHub
    • 登录名 — 例如u123_admin
    • 密码 — 自行生成并精心保存

第 3 步 — 上传文件

  1. 进入hPanel中的文件→文件管理器
  2. 导航至public_html/(这是域名的根)。
  3. 删除此文件夹中所有默认的 index.htmldefault.php 文件。
  4. 点击上传文件,从安装包中下载所有source.zip
    或者如果需要,可以直接通过FTP下载文件夹/source/的内容。
  5. 如果上传 ZIP,右键单击 → Extract。解压后,所有文件必须位于根目录public_html/
  6. 确认public_html/包含:app/public/vendor/.htaccessindex.phppublic/中)、.env等。
重要提示: 确保文件.htaccess存在于根目录public_html/。它包含 URL 重写规则。如果文件管理器隐藏了隐藏文件,请单击设置→显示隐藏文件

第 4 步 — 运行安装程序

  1. 打开浏览器并转到https://yourdomain.com/install
  2. 您将看到 FleetHub 安装程序。
  3. 第 1 步:要求 — 所有项目都必须通过(绿色)。如果出现错误,请联系 Hostinger 支持以启用缺少的 PHP 扩展。
  4. 步骤 2:数据库 — 输入上述步骤 2 中的信息:
    • 主持人: localhost
    • 港口: 3306
    • 数据库: u123_FleetHub
    • 用户名: u123_admin
    • 密码:(由 Hostinger 生成)
  5. 第 3 步:迁移 — 单击“运行迁移和种子”。大约需要 10 秒。别刷新。
  6. 第 4 步:管理 — 创建管理员帐户。使用强密码。
  7. 完成! — 您将看到 Cron URL(保存!)和登录按钮。

第 5 步 — 通过 Hostinger Cron 设置自动电子邮件警报

FleetHub 使用 Laravel 调度程序:合规警报、维护提醒、逾期请求、驾驶执照、车辆价值更新和车队健康评分重新计算。在 hPanel 上配置 a cron。

  1. 在 hPanel 中,转到 Advanced → Cron Jobs
  2. 单击创建 Cron 作业
  3. 选择类型:Custom(不是“PHP”——因为需要传递参数)。
  4. 输入以下命令(将 uXXXXXX 替换为您的 Hostinger 用户名):
    /usr/bin/php /home/uXXXXXX/public_html/artisan schedule:run
    提示:打开文件管理器,找到文件artisan(项目根目录),右键→属性复制完整路径。
  5. 将计划设置为每分钟 — 所有五个字段(分钟、小时、日、月、星期几)设置为 *
  6. 保存

FleetHub 将发送逾期索赔提醒、维护、合规和许可证警报、折旧更新以及自动车队健康评分重新计算。

文档根设置为 public_html/public/ 没问题 — Laravel 代码仍位于根 public_html/,因此 cron 路径仍为 /home/uXXXX/public_html/artisan(不要添加 /public/)。
没有 cron 的主机的备份计划: 如果您不使用 Hostinger 或者您的提供商没有 cron 作业,FleetHub 还提供了一个 webhook 激活 URL。
  1. 登录管理员 → 设置 → 系统选项卡 → 复制 Cron URL。
  2. cron-job.org 免费注册。
  3. 创建cronjob,粘贴URL,设置每15分钟,保存。

第 6 步 — 配置电子邮件 (SMTP)

Hostinger 为每个计划提供电子邮件帐户。对于 FleetHub 通知:

  1. 在 hPanel 中,转到 电子邮件 → 电子邮件帐户 并创建一个帐户(例如 noreply@yourdomain.com)。
  2. 通过文件管理器编辑public_html/中的文件.env
    MAIL_MAILER=smtp
    MAIL_HOST=smtp.hostinger.com
    MAIL_PORT=587
    MAIL_USERNAME=noreply@yourdomain.com
    MAIL_PASSWORD=your_email_password
    MAIL_ENCRYPTION=tls
    MAIL_FROM_ADDRESS=noreply@yourdomain.com
    MAIL_FROM_NAME="Your Company Name"
  3. 保存文件。
  4. 登录 FleetHub → 设置 → 电子邮件选项卡 → 发送测试电子邮件。如果你明白了,你就完成了。
单一计划的 SMTP 限制: Hostinger Single 允许每小时发送约 100 封电子邮件。对于大型部署,请使用专用提供商,例如 SendGrid、Mailgun 或 Postmark(提供免费计划)。

Hostinger Single 上的常见问题

上传后出现“500内部服务器错误”

  • 验证 .htaccess 是否存在于根 public_html/ 并包含重写规则。
  • 确认 hPanel 中的 PHP 版本设置为 8.2 或 8.3。
  • 通过文件管理器检查storage/logs/laravel.log以查看实际错误。

上传时提示“权限被拒绝”

Hostinger 通常会自行设置正确的权限,但如果没有:

  • 右键单击文件管理器中的storage/权限→递归设置为755
  • bootstrap/cache/相同。

QR扫描仪无法打开相机

浏览器摄像头 API 需要 HTTPS。 Hostinger 通过 Let's Encrypt 提供免费 SSL — 在 hPanel 中的SSL → Manage 下启用。

预定的电子邮件未发送

  • 在 hPanel → Cron Jobs → 检查 cron 条目中的 Last run 列。如果为空,则 cron 未运行 - 确认 artisan 路径正确。
  • 手动测试命令:在hPanel中打开Terminal(如果可用)并运行cron命令。如果出现错误,错误消息会明确指出问题所在(错误的PHP版本、错误的路径等)。
  • 确认 SMTP 配置正确(设置 → 电子邮件 → 发送测试)。
  • 检查 storage/logs/laravel.log 是否有调度程序错误。

性能缓慢

Hostinger Single 共享 CPU/RAM。如果您的团队超过 20 人,请考虑:

  • 升级到 Premium(约 3.99 美元/月)——更快的服务器、更多的资源、更多的数据库。
  • 或者业务(~5.99 美元/月)——专用资源、每日备份、暂存环境。

在 cPanel 上部署(共享主机)

本指南适用于标准 cPanel 共享主机(Namecheap、Bluehost、GoDaddy 和最便宜的主机)。 FleetHub 已经拥有 vendor/ 和前端构建 - 服务器上不需要 Composer、npm 或终端。如果 cPanel 没有终端,请使用SSH Access 或下面文件管理器中的方法。

已测试: cPanel 110+,带有 PHP 8.2/8.3、MySQL 5.7+/MariaDB 10.3+、Apache 和 Cron 作业。主目录通常是 /home/CPANELUSER/ — 请参阅 cPanel 侧边栏的一般信息

第 1 步 — 设置 PHP 版本和扩展

  1. 登录cPanel
  2. 打开MultiPHP Manager(或选择PHP版本)并为域选择PHP 8.2或8.3
  3. 打开 MultiPHP INI EditorPHP Extensions 并确认以下扩展已启用:
    • OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
  4. 如果扩展丢失,请从列表中启用它或联系主机支持。

第 2 步 — 启用 SSL (HTTPS)

  1. 转到SSL/TLS状态(或让我们加密SSL/AutoSSL)。
  2. 运行 AutoSSL 或为域安装免费证书。
  3. QR 扫描仪打开浏览器摄像头需要 HTTPS 必需
提示: 启用SSL后等待几分钟,然后打开https://yourdomain.com并检查挂锁图标。

步骤 3 — 创建 MySQL 数据库和用户

  1. 打开管理我的数据库(在数据库部分)。
  2. 创建新数据库中,输入名称(例如fleethub)并创建。 cPanel 自动添加前缀 - 全名,格式为 cpaneluser_fleethub
  3. MySQL Users中,创建一个具有强密码的用户。复制带有前缀的用户名。
  4. 将用户添加到数据库中,选择用户和数据库,添加,然后授予所有权限。这一步很容易被遗漏——遗漏它会导致错误Access denied (1045)
  5. 准确记录cPanel中显示的3个值:
    • 数据库名称 — 例如u123_FleetHub
    • 登录名 — 例如u123_admin
    • 密码 — 自行生成并精心保存

第 4 步 — 上传文件

  1. 打开文件管理器,转到public_html/(文档根目录)。
  2. 打开设置→显示隐藏文件即可看到.htaccess.env
  3. 删除 public_html/ 中的默认 index.html(如果存在)。
  4. 上传source.zipExtract,或通过FTP上传文件夹/source/的内容。
  5. 解压后,public_html/必须与app/public/vendor/.htaccess根和artisan在同一级。
重要提示: .htaccess root 将所有请求重定向到 public/ — 通常 需要手动更改文档根。

步骤 5 — 在运行安装程序之前准备 .env

打开/install时,请在之前完成此步骤。 Laravel 需要 APP_KEY 有效并且.env 中的数据库配置正确。

  1. 在文件管理器中,将.env.example复制到.env(与artisan同一文件夹)。
  2. 编辑 .env 并设置最小值:
    APP_NAME=FleetHub
    APP_ENV=production
    APP_DEBUG=false
    APP_URL=https://yourdomain.com
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=cpaneluser_fleethub
    DB_USERNAME=cpaneluser_admin
    DB_PASSWORD="your_password"
    
    SESSION_DRIVER=file
    CACHE_STORE=file
  3. 设置 DB_CONNECTION=mysql.env.example 默认使用 SQLite;共享主机需要 MySQL。
  4. SESSION_DRIVER=fileCACHE_STORE=file 放在第一次迁移之前(避免会话表错误)。
  5. 如果密码包含特殊字符(#$! 等),请将DB_PASSWORD 用引号引起来。

生成APP_KEY(无需终端)

许多 cPanel 计划不包括网络终端。使用以下方法之一:

  • SSH 访问(cPanel → 安全 → SSH 访问):PuTTY/PowerShell 连接,运行 cd ~/public_html && php artisan key:generate
  • 文件管理器 — 创建临时public/genkey.php,打开浏览器,将结果复制到APP_KEY=,然后立即删除文件。
    <?php
    echo 'base64:' . base64_encode(random_bytes(32));
  • PC 上 — 如果本地有 PHP:php -r "echo 'base64:'.base64_encode(random_bytes(32));" 然后粘贴.env
安全:复制密钥后立即删除genkey.php。不要将帮助程序脚本留在生产中。
  • 如果安装程序报告写入错误,请将权限 storage/bootstrap/cache/ 设置为 755(递归)。

第 6 步 — 运行网络安装程序

  1. 在浏览器中打开https://yourdomain.com/install
  2. 第 1 步:要求 — 全部都必须通过(绿色)。如果缺少,请更正步骤 1 中的 PHP 扩展。
  3. 步骤 2:数据库 — 输入步骤 3 中带有前缀的名称:
    • 主持人: 127.0.0.1 or localhost
    • 港口: 3306
    • 数据库: cpaneluser_fleethub
    • 用户名: cpaneluser_admin
    • 密码: (your MySQL password)
  4. 第 3 步:迁移 — 单击“运行迁移和种子”。 〜10秒。不要刷新页面。
  5. 如果安装干净生产,请取消选中包括演示数据
  6. 第 4 步:管理 — 创建管理员帐户。
  7. 完成! — 将 Cron URL 保存在最后一个屏幕中。

第 7 步 — 配置 Cron 作业以进行电子邮件警报

FleetHub 需要每分钟运行一个 cron,以便 Laravel 发送合规警报、维护提醒、逾期请求和其他预定电子邮件。

  1. 在 cPanel 中,转到高级 → Cron 作业
  2. 添加新的Cron Job中,将时间表设置为每分钟* * * * *)。
  3. 输入命令(将常规信息中的CPANELUSER替换为cPanel用户名):
    /usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run
    提示:PHP 路径可以是/usr/local/bin/php/usr/bin/php。工匠路径通常是/home/CPANELUSER/public_html/artisan
  4. 点击添加新的Cron Job保存。
文档根是public_html/public/ Cron 仍然指向/home/CPANELUSER/public_html/artisan — 不再指向/public/
没有 cron? 在应用程序中使用 Cron URL:
  1. 登录管理→设置→系统→复制Cron URL。
  2. cron-job.org 免费注册。
  3. 创建一个每 15 分钟调用该 URL 的作业。

步骤 8 — 电子邮件配置 (SMTP)

创建用于传出通知的 cPanel 电子邮件帐户:

  1. 转到电子邮件帐户→创建例如。 noreply@yourdomain.com
  2. 在文件管理器中编辑.env
    MAIL_MAILER=smtp
    MAIL_HOST=mail.yourdomain.com
    MAIL_PORT=587
    MAIL_USERNAME=noreply@yourdomain.com
    MAIL_PASSWORD=your_email_password
    MAIL_ENCRYPTION=tls
    MAIL_FROM_ADDRESS=noreply@yourdomain.com
    MAIL_FROM_NAME="Your Company Name"
  3. 保存,然后在 FleetHub 中:设置→电子邮件→发送测试电子邮件
SMTP 共享主机限制: 许多 cPanel 主机限制约 100–500 封电子邮件/小时。大型团队应该使用 SendGrid、Mailgun 或 Postmark。

cPanel 上的常见问题

“用户访问被拒绝”(SQLSTATE 1045)

  • 从 cPanel 复制数据库名称和用户名 exactly — 包括前缀。
  • 确认将用户添加到数据库并具有所有权限。
  • 在 cPanel 中重置 MySQL 密码并更新 .env — 如果有特殊字符,请在 DB_PASSWORD 周围使用括号。

数据库步骤通过后迁移失败

  • 向导测试形式,然后迁移 đọc .env。确保它们匹配。
  • 如果有bootstrap/cache/config.php,请删除,然后重试。
  • 确保 DB_CONNECTION=mysql.env 中(不是 sqlite)。

迁移时“默认值无效”(1067)

MySQL 在共享托管上的严格模式可以拒绝某些列的默认值。请参阅 storage/logs/laravel.log 并确保 PHP 8.2+ 以及所有扩展。

上传后出现“500内部服务器错误”

  • 查看原始 .htaccess 和 PHP 8.2+。
  • 实际错误请参见storage/logs/laravel.log
  • 确认 APP_KEY 已在 .env 中设置 — 空键会导致错误 500。

cPanel 中没有终端

在许多共享包上正常。 Use SSH Access (if enabled), genkey.php temporarily in Step 5, or generate key on local PC.

QR 扫描仪无法打开相机

通过SSL/TLS Status → AutoSSL启用SSL并使用https://访问。

配置

.env 文件

描述例如
APP_NAME应用程序名称显示在标题栏中FleetHub
APP_URL安装的公共 URLhttps://fleet.example.com
APP_DEBUG生产时设置falsefalse
DB_*数据库连接信息mysql, 127.0.0.1, 3306, ...
MAIL_MAILER邮件驱动程序smtp, log, mailgun
MAIL_HOSTSMTP 服务器主机名smtp.gmail.com
MAIL_PORT端口 SMTP587
MAIL_USERNAME用户名 SMTPyour@email.com
MAIL_PASSWORDSMTP 密码或应用令牌**********
MAIL_FROM_ADDRESS默认发件人地址noreply@example.com

安装在应用程序中

大多数非敏感选项在管理→设置配置:

  • 常规:公司名称/电子邮件/电话、品牌
  • 车队:车辆代码前缀、交接清单模板、维护默认、公共车辆页面模式
  • 电子邮件:发送测试电子邮件以测试 SMTP
  • 通知:启用/禁用合规警报、维护、车辆要求、许可证
  • 多语言:时区、日期格式、货币 — 适用于整个应用程序
  • 合规:管理合规类型预设(保险、注册、路税...)
  • 品牌:应用程序名称和徽标 - 更新登录、页脚、选项卡标题
  • 外观:自定义品牌颜色、状态和浅色/深色文本 — 请参阅常见问题解答中的品牌重塑指南

多语言支持

FleetHub 提供 11 种语言版本,包括阿拉伯语 (RTL) 和印地语。用户通过右上角的标志下拉菜单更改语言。

Shipped languages

代码语言方向
enEnglish (default)LTR
viTiếng ViệtLTR
esEspañolLTR
frFrançaisLTR
deDeutschLTR
zh简体中文LTR
ja日本語LTR
pt-BRPortuguês (Brasil)LTR
ruРусскийLTR
arالعربيةRTL
hiहिन्दीLTR

如何更改语言

  1. 单击右上角的旗帜图标以打开下拉菜单。
  2. Pick your language from the list.
  3. 页面将重新加载;所有 UI 标签、日期和货币格式都会保留。
  4. 选择同时保存在用户帐户和 cookie 中(1 年)。
不要直接打开应用程序的 .html 文件。 FleetHub 是一个 Laravel + Vue 服务器端应用程序 - 将 POST 发送语言更改为 /locale/{code},仅在 PHP 服务器运行时才有效。始终通过真实域(生产)或http://localhost:8000(使用php artisan serve的开发)进行访问。像这样的文档文件是完全独立的,可以直接打开。

添加自定义语言(管理员)

前往管理→翻译(管理员有权限管理翻译):

  • 单击“添加区域设置” — 输入代码(例如,mk 代表马其顿语)、显示名称、区域设置名称、SVG 标志文件名、方向 (LTR/RTL) 和原始区域设置以复制翻译。
  • 新的区域设置出现在语言切换器和默认语言列表中(位于“设置”→“本地化”)。
  • DB 翻译会自动覆盖 lang/{code}/ 中的文件。

翻译编辑

编辑器按文件列出所有翻译键(资产、导航、设置...)。每个键都显示基线文件和覆盖数据库(如果有)。

  • 按区域设置、翻译组或文本搜索进行过滤。
  • 点击值进行内联编辑;现在保存到数据库。
  • 重置键返回到基线文件。
  • 内置语言环境(en、vi、es...)可以编辑;来自数据库的完全自定义区域设置。
  • 只有具有管理翻译权限的用户才能访问此页面。

CSV 导入/导出

  • Export — 将语言环境的所有密钥下载为 CSV (group,key,value)。
  • Import — 在同一列中上传 CSV;更新覆盖数据库,添加新密钥。

根据用户的默认区域设置

每个用户都有列locale。由于 Laravel 的 HasLocalePreference 合约,通知电子邮件会根据收件人的语言自动发送。

站点默认语言位于设置→本地化→默认语言。个人用户通过标题上的语言切换器进行覆盖。

功能列表(15个模块组)

车辆管理

  • 自动生成的车辆代码(VH 前缀)
  • 车牌、VIN、品牌、型号、燃油类型
  • 生成二维码并批量打印
  • 状态、状态、仪表跟踪
  • 批量导入/导出Excel
  • 购买许多类似的汽车时克隆汽车
  • 带有生命周期时间表的 7 个选项卡详细信息页面

要求和移交

  • 流程请求→审批→付款
  • 日历和重复日历检测
  • 二维损伤图+数字签名
  • 导出 PDF 移交报告

维护

  • 安排预防和纠正
  • 按优先级安排
  • 自己安排下一次预防性维护
  • 费用跟踪 → 自动费用同步
  • 截止日期前电子邮件提醒

合规与燃料

  • 合规部分(保险、注册、许可)
  • 监控驾驶执照到期情况
  • 燃油日志、上传收据和压缩照片
  • 检查时钟欺诈

总拥有成本和折旧

  • 3种折旧方法,包括生产单位(公里)
  • 包含成本/公里指数的 TCO 表
  • 自动同步燃料和维护成本
  • 折旧曲线图

报告

  • 7 种车队报告
  • 导出Excel+PDF
  • 仪表板 ApexCharts
  • 按时间段过滤

经营车队

  • 车队健康评分,每天重新计算
  • 管理驾驶员,同步驾驶执照
  • 车辆费用(保险、通行费、停车费……)
  • 驾驶员快速二维码扫描(燃油、仪表、事故)

多种语言

  • 11种UI语言+自定义语言环境
  • 翻译编辑器、内联搜索和编辑
  • 导入/导出 CSV 以进行批量更新
  • 时区和货币适用于整个应用程序

品牌与外观

  • 浏览器选项卡标题来自“设置”→“品牌”→“应用程序名称”
  • 在“设置”→“外观”中自定义颜色(浅色和深色)

用户和角色

FleetHub 有 5 个可用于内部车队运营的角色:

角色力量
行政完整的系统控制——用户、部门、设置、审核日志、网络钩子、翻译
车队管理管理车辆、司机、请求、移交、维护、燃油日志;批准请求;完整报告
会计TCO 表、成本、折旧、合规报告 — 财务重点、主要视图
部门主管浏览您的房间请求、查看车辆并向部门报告
司机查看暂停的车辆,记录燃油日志,快速扫描二维码,查看您的请求

模拟账户(密码:password):admin@fleethub.testmanager@fleethub.testdept@fleethub.testaccountant@fleethub.testdriver@fleethub.test。安装或播种时启用演示数据。 Spatie 权限——管理员可以微调每个权限。

车辆管理

创建新车

  1. 导航至车辆→新车
  2. 填写车牌号、品牌、型号、年份、燃料类型、类别和部门。
  3. 添加购买日期和价格(折旧和 TCO 所需)。
  4. 上传照片(多个文件,每个文件最大 5 MB — 在移动设备上自动压缩)。
  5. 保存 — 自动生成车辆代码和二维码。

车辆代码格式

默认值:{PREFIX}-{YEAR}-{NNNN},例如VH-2026-0001。在设置→车队→车辆代码前缀进行配置。

批量导入

  1. 在车辆页面点击导入
  2. 下载 Excel 模板。
  3. 填写数据 — 必填列:license_platemakemodelcategory_name
  4. 上传文件。

二维码&快速扫描

每辆车在创建时都会自动生成一个二维码。扫描即可打开公共车辆页面,或在应用程序中对已登录的驾驶员执行快速操作。

打印二维码标签

  • 单个标签:点击车辆上的打印机图标。
  • 批量打印:选择多辆车辆→打印二维码标签。 A4 尺寸,每行 2 个标签。

在应用程序中扫描

在车辆页面点击扫描二维码。允许摄像头。适用于具有 HTTPS 或 localhost 的现代浏览器。

公共汽车页面

每辆车都有一个位于 /v/{vehicle_code} 的公共 URL — 无需登录即可快速识别。

  • 设置→车队→公共车辆页面进行配置:公共,需要登录或关闭。
  • 访客模式仅查看基本信息(车牌、品牌/型号)。快速操作需要登录。
  • 更改APP_URL后,按重新生成设置中的所有二维码

程序

请求一辆车

员工发送使用车辆的请求。流:requested → approved → returned(或rejected)。车队经理或审批部门负责人。该日历显示整个车队的车辆预订。逾期归还车辆并发送警告电子邮件。

车辆交接

  1. 请求获得批准后,在司机取车前创建下车交接
  2. 记录时钟、完成检查表、在二维图表上标记损坏、附加照片和数字签名。
  3. 保存并下载 PDF 交付报告以供记录。
  4. 还车时,创建交接 — 比较状态、更新仪表、删除司机分配。
  5. 完成入库交接会将申请标记为已归还,并将车辆状态设为可用。

折旧和总体拥有成本

FleetHub 使用三种方法之一计算车辆折旧。折旧与燃料和费用日志一起包含在 TCO 表中。

方法食谱使用时
直线(Cost - Salvage) / Useful Life最受欢迎;每年均匀折旧
余额逐渐减少2 / Useful Life × Book Value折旧快;税务目的
生产单位(本期公里数/预计总公里数)×(购买价格-清算价值)车辆预计总公里数(根据时钟)

默认继承自车辆类别。 current_value 每月通过 fleethub:update-vehicle-values 进行更新。 TCO = 购买价格 + 所选期间的车辆总成本。

自定义字段

管理 → 自定义字段允许向车辆添加无限的属性:

  • 类型:文本、数字、日期、选择、文本区域、文件、复选框
  • 范围:适用于所有类别或特定车辆类别
  • 排列:拖放手柄
  • 保存车辆时检查必填字段

报告

七个综合车队报告,可从“报告”菜单访问:

  1. 总 TCO — 车辆和整个车队的总拥有成本
  2. 折旧表 — 按车辆折旧,带文件导出
  3. 维护成本 — 按车辆、类型和月份划分的支出
  4. 燃油消耗和成本 — 公里/升趋势,不规则标记
  5. 车辆请求使用 — 一段时间内的车辆预订率
  6. 合规期满 — 车辆证件和驾照即将过期
  7. 各部门车辆分配 — 各部门车辆及使用情况

所有报告均支持通过页面顶部的按钮导出ExcelPDF

Webhook 集成

当发生重要的车队事件时,FleetHub 可以通知外部服务。

可用性事件

  • vehicle.created, vehicle.updated, vehicle.deleted
  • requisition.approved, requisition.rejected, requisition.overdue, requisition.returned
  • handover.completed
  • compliance.expiring, compliance.expired
  • maintenance.due, maintenance.overdue, maintenance.completed
  • fleet_health_score.dropped

有效负载格式

{
  "event": "handover.completed",
  "timestamp": "2026-06-23T08:00:00+00:00",
  "data": {
    "vehicle_id": 1,
    "vehicle_code": "VH-2026-0001",
    "license_plate": "51A-12345",
    "handover_id": 12,
    "direction": "outgoing",
    "driver_id": 4
  }
}

验证签名

如果配置为机密,则请求的标头 X-FleetHub-Signature 包含主体的 HMAC-SHA256。验证你的一方:

$expected = hash_hmac('sha256', $rawBody, $secret);
if (hash_equals($expected, $request->header('X-FleetHub-Signature'))) {
  // 有效的
}

重试政策

投递失败,重试 3 次,每 200 毫秒一次。连续 10 次失败后,Webhook 将自行关闭。

计划任务

FleetHub 使用 Laravel 调度程序执行后台任务。只需 one cron — Laravel 按时运行每个 fleethub: 命令。

共享托管(Cron Jobs cPanel / Hostinger)

请参阅安装 cPanel → 步骤 7安装 Hostinger → 步骤 5。简而言之:高级 → Cron Jobs,命令:

/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:run

日历:每分钟(所有五个字段中*)。

cPanel cron 命令

CPANELUSER 替换为您的 cPanel 用户名:

/usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run

VPS/私人服务器(crontab)

使用 Web 用户运行 crontab -e 并添加:

* * * * * cd /path/to/FleetHub && php artisan schedule:run >> /dev/null 2>&1

后备:ping 外部 URL

如果主机没有 cron,请使用应用程序(设置 → 系统)中的 Cron URL 和 cron-job.org(免费,每 15 分钟一次)。

任务自动运行

时间命令目的
每日 08:00fleethub:send-requisition-overdue-alerts请求已获批准,但在截止日期后尚未付款
每日 08:30fleethub:send-maintenance-reminders提醒维护即将到期
每日 09:00fleethub:send-compliance-expiry-alerts合规性将于 14/30/7/1 天后到期
每日 09:30fleethub:send-driver-license-alerts警告驾驶执照即将过期
每月 1 日 02:00fleethub:update-vehicle-values根据折旧更新车辆 current_value
每日 03:00fleethub:recalculate-fleet-health-score重新计算并缓存舰队健康点

升级指南

FleetHub v1.0.0 是 CodeCanyon 上的首次发布。

FleetHub v1.0.0 是首个公开发布版本。没有可升级的旧版本。新版本发布时将补充升级指南。

故障排除

存储上“权限被拒绝”

chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

QR 扫描仪无法打开相机

浏览器摄像头 API 需要 HTTPS。测试时安装 SSL 或使用 localhost

未收到电子邮件

检查storage/logs/laravel.log是否有错误。使用设置→电子邮件→发送测试电子邮件确认SMTP信息。确保 SMTP 服务器允许发送 IP。

cPanel 上的数据库“访问被拒绝”(1045)

用户/密码错误,用户尚未分配给数据库,或者密码中的特殊字符损坏.env。参见安装cPanel→常见问题

迁移错误 1067(默认值无效)

共享主机上的 MySQL 严格模式拒绝多个 timestamp NOT NULL 列。从 v2.1.0+ 开始修复。更新软件包或在迁移中将 yêu cầu xe_date / expected_return_date 更改为 dateTime 需要 xes。

安装前APP_KEY丢失/错误500

在应用程序运行之前,Laravel 需要 .env 中的 APP_KEY。如果 cPanel 没有终端,请参阅安装 cPanel → 步骤 5(SSH、genkey.php 或在 PC 上创建)。

重置设置

删除storage/installed.lock并再次访问/install。如果再次运行迁移,现有数据将被删除。

性能——慢车列表

运行php artisan optimize。确保 MySQL 索引位于 vehicles.vehicle_codevehicles.license_platevehicles.status

变更日志

v1.0.0 — 首次发布 (2026-06)

  • 使用自行生成的二维码和公共页面对车辆进行增删改查/v/{vehicle_code}
  • 5个角色(管理员、车队经理、经理、会计、司机)
  • 管理驾驶员,将驾驶执照到期时间同步到合规部分
  • 带有时间表和逾期警报的车辆请求流程
  • 移交车辆并附上二维损坏图、清单、签名和 PDF
  • 燃油日志、防抄表、费用自动同步
  • 车辆成本和 TCO 表以及成本/公里分析
  • 折旧 — 直线、余额递减、生产单位(公里)
  • 商品符合 30/14/7/1 天过期警告
  • 安排维护、预防性自我更新、跟踪成本
  • 车队健康评分、每日重新计算和详细模态
  • 7 份车队报告,Excel 和 PDF 导出
  • 按车辆类别划分的自定义字段(7 种类型)
  • Webhooks 签署 HMAC (X-FleetHub-Signature) 并重试
  • 带 diff 的 Spatie Activitylog 审核日志
  • 多语言 UI:11 种语言环境,包括阿拉伯语 RTL 和印地语
  • 公司、车队、电子邮件、通知、合规预设设置
  • 带有演示数据播种器的 Web 安装程序
  • 深色模式,UI 移动优先,上传时压缩图像

笔记

使用的开源库