开始
不到 10 分钟即可在 cPanel、Hostinger 或私人 VPS 上安装 FleetHub。
用户和角色
具有 Spatie 权限的 5 个车队角色 — 管理员、车队经理、经理、会计师、司机。
产品特点
车辆、驾驶员、车辆请求、移交、燃油日志、TCO、合规性、车队健康评分等。
定制化
按车辆类型、品牌、语言和界面划分的自定义字段。
安装Hostinger
在最便宜的单一共享包上逐步部署。
安装控制面板
在 cPanel 托管上逐步部署 — 无需终端。
安全与二维码
HTTPS、HMAC 签名 Webhook、审核日志以及使用摄像头进行快速 QR 扫描。
报告和导出
7 份车队报告,Excel + PDF 导出,按日期过滤。
电子邮件提醒
合规提醒、保养、逾期车辆及驾照查询。
常见问题
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 安装程序(推荐)
- 将项目文件上传到网络服务器。
- 将文档根目录指向文件夹
public/。 - 授权:
storage/和bootstrap/cache/必须可写(chmod 775)。 - 将
.env.example复制到.env并设置APP_KEY(如果SSH可用,则运行php artisan key:generate,或参见cPanel设置→步骤5)。 - 在浏览器中访问
https://yourdomain.com/install。 - 按照向导操作 — 要求 → 数据库 → 迁移 → 管理员帐户 → 完成。选择包括演示数据以加载示例数据(请参阅用户和角色)。
选项 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
向导第 2 步 — 数据库配置
当向导进行到第2步时,您需要在主机控制面板中输入创建的数据库的MySQL连接信息。数据库必须已存在(可以为空 - 下一步将创建表)。
| 学校 | 默认/示例 | 笔记 |
|---|---|---|
| Host | 127.0.0.1 | 适用于 99% 的共享主机(Hostinger、cPanel、Plesk)。保持不变,除非主机提供自己的 MySQL 主机名(托管数据库,如 AWS RDS、DigitalOcean 托管数据库)。 |
| Port | 3306 | 标准 MySQL 端口。仅当提供商使用不同的端口时才进行更改(罕见)。 |
| 数据库名称 | uXXXXX_fleethub | 全名显示在主机控制面板中。大多数共享主机都有一个根据用户 ID 的前缀(例如 Hostinger:u287094729_fleethub)。 |
| 登录名 | uXXXXX_fleethub | MySQL帐户具有上述数据库的权限。 请勿使用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=database或CACHE_STORE=database时发生。编辑.env,将两者更改为file,保存,然后重新加载向导。如果需要,您可以在安装完成后将其改回database。 |
could not find driver | 缺少或禁用 PHP pdo_mysql 扩展。在主机控制面板中启用。在cPanel上:MultiPHP INI编辑器→扩展或选择PHP版本→扩展。在 Hostinger 上:hPanel → 高级 → PHP 配置 → PHP 扩展选项卡。 |
127.0.0.1和3306)——在共享主机上保持相同。您只需输入数据库名称、用户名和密码。按测试&保存 → 检查连接并转到步骤 3。
本地主机(本地开发)
在部署到生产之前在计算机上运行 FleetHub 以进行测试或开发的快速指南。选择适合您的操作系统的环境。
选项 1 — Laravel Herd(推荐,macOS 和 Windows)
Laravel Herd 是 Laravel 团队的官方本地环境——免费、原生、无 Docker。包括 PHP 8.2/8.3/8.4、Nginx 和(在 Herd Pro 中)MySQL/Redis。
- 从 herd.laravel.com 下载并安装 Laravel Herd。
- 将 FleetHub 项目文件夹设置为
~/Herd/(macOS) 或%USERPROFILE%\Herd\(Windows)。 Herd 创建域.test— 例如http://fleethub.test。 - 打开Herd → Sites,确认PHP版本为8.2或8.3。右键单击站点 → Secure 以启用 HTTPS(二维码扫描器所需)。
- 创建 MySQL 数据库。使用Herd Pro,转到服务→MySQL→在TablePlus中打开。如果您没有 Pro,请安装 MySQL Community 或使用 SQLite(
DB_CONNECTION=sqlite、touch database/database.sqlite)。 - 将
.env.example复制到.env,填写DB信息,然后在项目根运行php artisan key:generate。 - 在浏览器中打开
http://fleethub.test/install并按照向导操作。
选项 2 — XAMPP(Windows、macOS、Linux)
XAMPP 捆绑 Apache、MySQL/MariaDB 和 PHP。免费、跨平台。请务必选择版本PHP 8.2或更高版本。
- 从 apachefriends.org 下载 XAMPP 8.2+ 并安装。
- 将 FleetHub 项目复制到
C:\xampp\htdocs\FleetHub\(Windows) 或/Applications/XAMPP/htdocs/FleetHub/(macOS)。 - 打开XAMPP控制面板并启动Apache和MySQL。如果端口被占用,进入Config→service.conf将Apache切换为8080。
- 转到
http://localhost/phpmyadmin→New→创建名为fleethub、排序规则为utf8mb4的数据库。 - 在项目文件夹中:将
.env.example复制到.env,设置DB_DATABASE=fleethub,DB_USERNAME=root,将DB_PASSWORD留空(XAMPP默认)。运行php artisan key:generate。 - 访问
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。
- 从 larragon.org 下载 Laragon Full 并安装。
- 在 Laragon 中:菜单 → PHP → 版本 — 切换到 PHP 8.2 或 8.3。
- 将 FleetHub 项目复制到
C:\laragon\www\FleetHub\。 - 按全部启动。 Laragon 创建自己的虚拟主机:
http://fleethub.test(指向文件夹public/)。 - 打开HeidiSQL(已包含)→ 创建数据库
fleethub。默认信息:用户root,密码为空。 - 使用数据库信息编辑
.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://localhost 和 http://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。
第 1 步 — 准备托管
- 登录Hostinger hPanel。
- 前往托管→管理查看您的域名。
- 通过高级→PHP配置将PHP版本设置为8.2或8.3。
- 确保启用这些 PHP 扩展(通常默认情况下):
- OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
第 2 步 — 创建 MySQL 数据库
- 在 hPanel 中,转到 数据库 → MySQL 数据库。
- 按创建新数据库。
- 记录这 3 个值:
数据库名称— 例如u123_FleetHub登录名— 例如u123_admin密码— 自行生成并精心保存
第 3 步 — 上传文件
- 进入hPanel中的文件→文件管理器。
- 导航至
public_html/(这是域名的根)。 - 删除此文件夹中所有默认的
index.html或default.php文件。 - 点击上传文件,从安装包中下载所有
source.zip。
或者如果需要,可以直接通过FTP下载文件夹/source/的内容。 - 如果上传 ZIP,右键单击 → Extract。解压后,所有文件必须位于根目录
public_html/。 - 确认
public_html/包含:app/、public/、vendor/、.htaccess、index.php(public/中)、.env等。
.htaccess存在于根目录public_html/。它包含 URL 重写规则。如果文件管理器隐藏了隐藏文件,请单击设置→显示隐藏文件。
第 4 步 — 运行安装程序
- 打开浏览器并转到
https://yourdomain.com/install。 - 您将看到 FleetHub 安装程序。
- 第 1 步:要求 — 所有项目都必须通过(绿色)。如果出现错误,请联系 Hostinger 支持以启用缺少的 PHP 扩展。
- 步骤 2:数据库 — 输入上述步骤 2 中的信息:
- 主持人:
localhost - 港口:
3306 - 数据库:
u123_FleetHub - 用户名:
u123_admin - 密码:(由 Hostinger 生成)
- 主持人:
- 第 3 步:迁移 — 单击“运行迁移和种子”。大约需要 10 秒。别刷新。
- 第 4 步:管理 — 创建管理员帐户。使用强密码。
- 完成! — 您将看到 Cron URL(保存!)和登录按钮。
第 5 步 — 通过 Hostinger Cron 设置自动电子邮件警报
FleetHub 使用 Laravel 调度程序:合规警报、维护提醒、逾期请求、驾驶执照、车辆价值更新和车队健康评分重新计算。在 hPanel 上配置 a cron。
- 在 hPanel 中,转到 Advanced → Cron Jobs。
- 单击创建 Cron 作业。
- 选择类型:Custom(不是“PHP”——因为需要传递参数)。
- 输入以下命令(将
uXXXXXX替换为您的 Hostinger 用户名):
提示:打开文件管理器,找到文件/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:runartisan(项目根目录),右键→属性复制完整路径。 - 将计划设置为每分钟 — 所有五个字段(分钟、小时、日、月、星期几)设置为
*。 - 按保存。
FleetHub 将发送逾期索赔提醒、维护、合规和许可证警报、折旧更新以及自动车队健康评分重新计算。
public_html/public/? 没问题 — Laravel 代码仍位于根 public_html/,因此 cron 路径仍为 /home/uXXXX/public_html/artisan(不要添加 /public/)。
- 登录管理员 → 设置 → 系统选项卡 → 复制 Cron URL。
- 在 cron-job.org 免费注册。
- 创建cronjob,粘贴URL,设置每15分钟,保存。
第 6 步 — 配置电子邮件 (SMTP)
Hostinger 为每个计划提供电子邮件帐户。对于 FleetHub 通知:
- 在 hPanel 中,转到 电子邮件 → 电子邮件帐户 并创建一个帐户(例如
noreply@yourdomain.com)。 - 通过文件管理器编辑
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" - 保存文件。
- 登录 FleetHub → 设置 → 电子邮件选项卡 → 发送测试电子邮件。如果你明白了,你就完成了。
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 或下面文件管理器中的方法。
/home/CPANELUSER/ — 请参阅 cPanel 侧边栏的一般信息。
第 1 步 — 设置 PHP 版本和扩展
- 登录cPanel。
- 打开MultiPHP Manager(或选择PHP版本)并为域选择PHP 8.2或8.3。
- 打开 MultiPHP INI Editor 或 PHP Extensions 并确认以下扩展已启用:
- OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
- 如果扩展丢失,请从列表中启用它或联系主机支持。
第 2 步 — 启用 SSL (HTTPS)
- 转到SSL/TLS状态(或让我们加密SSL/AutoSSL)。
- 运行 AutoSSL 或为域安装免费证书。
- QR 扫描仪打开浏览器摄像头需要 HTTPS 必需。
https://yourdomain.com并检查挂锁图标。
步骤 3 — 创建 MySQL 数据库和用户
- 打开管理我的数据库(在数据库部分)。
- 在创建新数据库中,输入名称(例如
fleethub)并创建。 cPanel 自动添加前缀 - 全名,格式为cpaneluser_fleethub。 - 在MySQL Users中,创建一个具有强密码的用户。复制带有前缀的用户名。
- 在将用户添加到数据库中,选择用户和数据库,添加,然后授予所有权限。这一步很容易被遗漏——遗漏它会导致错误
Access denied (1045)。 - 准确记录cPanel中显示的3个值:
数据库名称— 例如u123_FleetHub登录名— 例如u123_admin密码— 自行生成并精心保存
第 4 步 — 上传文件
- 打开文件管理器,转到
public_html/(文档根目录)。 - 打开设置→显示隐藏文件即可看到
.htaccess和.env。 - 删除
public_html/中的默认index.html(如果存在)。 - 上传
source.zip和Extract,或通过FTP上传文件夹/source/的内容。 - 解压后,
public_html/必须与app/、public/、vendor/、.htaccess根和artisan在同一级。
.htaccess root 将所有请求重定向到 public/ — 通常 需要手动更改文档根。
步骤 5 — 在运行安装程序之前准备 .env
打开/install时,请在之前完成此步骤。 Laravel 需要 APP_KEY 有效并且.env 中的数据库配置正确。
- 在文件管理器中,将
.env.example复制到.env(与artisan同一文件夹)。 - 编辑
.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 - 设置
DB_CONNECTION=mysql—.env.example默认使用 SQLite;共享主机需要 MySQL。 - 将
SESSION_DRIVER=file和CACHE_STORE=file放在第一次迁移之前(避免会话表错误)。 - 如果密码包含特殊字符(
#、$、!等),请将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 步 — 运行网络安装程序
- 在浏览器中打开
https://yourdomain.com/install。 - 第 1 步:要求 — 全部都必须通过(绿色)。如果缺少,请更正步骤 1 中的 PHP 扩展。
- 步骤 2:数据库 — 输入步骤 3 中带有前缀的名称:
- 主持人:
127.0.0.1orlocalhost - 港口:
3306 - 数据库:
cpaneluser_fleethub - 用户名:
cpaneluser_admin - 密码: (your MySQL password)
- 主持人:
- 第 3 步:迁移 — 单击“运行迁移和种子”。 〜10秒。不要刷新页面。
- 如果安装干净生产,请取消选中包括演示数据。
- 第 4 步:管理 — 创建管理员帐户。
- 完成! — 将 Cron URL 保存在最后一个屏幕中。
第 7 步 — 配置 Cron 作业以进行电子邮件警报
FleetHub 需要每分钟运行一个 cron,以便 Laravel 发送合规警报、维护提醒、逾期请求和其他预定电子邮件。
- 在 cPanel 中,转到高级 → Cron 作业。
- 在添加新的Cron Job中,将时间表设置为每分钟(
* * * * *)。 - 输入命令(将常规信息中的
CPANELUSER替换为cPanel用户名):
提示:PHP 路径可以是/usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run/usr/local/bin/php或/usr/bin/php。工匠路径通常是/home/CPANELUSER/public_html/artisan。 - 点击添加新的Cron Job保存。
public_html/public/? Cron 仍然指向/home/CPANELUSER/public_html/artisan — 不再指向/public/。
- 登录管理→设置→系统→复制Cron URL。
- 在 cron-job.org 免费注册。
- 创建一个每 15 分钟调用该 URL 的作业。
步骤 8 — 电子邮件配置 (SMTP)
创建用于传出通知的 cPanel 电子邮件帐户:
- 转到电子邮件帐户→创建例如。
noreply@yourdomain.com。 - 在文件管理器中编辑
.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" - 保存,然后在 FleetHub 中:设置→电子邮件→发送测试电子邮件。
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 | 安装的公共 URL | https://fleet.example.com |
APP_DEBUG | 生产时设置false | false |
DB_* | 数据库连接信息 | mysql, 127.0.0.1, 3306, ... |
MAIL_MAILER | 邮件驱动程序 | smtp, log, mailgun |
MAIL_HOST | SMTP 服务器主机名 | smtp.gmail.com |
MAIL_PORT | 端口 SMTP | 587 |
MAIL_USERNAME | 用户名 SMTP | your@email.com |
MAIL_PASSWORD | SMTP 密码或应用令牌 | ********** |
MAIL_FROM_ADDRESS | 默认发件人地址 | noreply@example.com |
安装在应用程序中
大多数非敏感选项在管理→设置配置:
- 常规:公司名称/电子邮件/电话、品牌
- 车队:车辆代码前缀、交接清单模板、维护默认、公共车辆页面模式
- 电子邮件:发送测试电子邮件以测试 SMTP
- 通知:启用/禁用合规警报、维护、车辆要求、许可证
- 多语言:时区、日期格式、货币 — 适用于整个应用程序
- 合规:管理合规类型预设(保险、注册、路税...)
- 品牌:应用程序名称和徽标 - 更新登录、页脚、选项卡标题
- 外观:自定义品牌颜色、状态和浅色/深色文本 — 请参阅常见问题解答中的品牌重塑指南
多语言支持
FleetHub 提供 11 种语言版本,包括阿拉伯语 (RTL) 和印地语。用户通过右上角的标志下拉菜单更改语言。
Shipped languages
| 代码 | 语言 | 方向 |
|---|---|---|
en | English (default) | LTR |
vi | Tiếng Việt | LTR |
es | Español | LTR |
fr | Français | LTR |
de | Deutsch | LTR |
zh | 简体中文 | LTR |
ja | 日本語 | LTR |
pt-BR | Português (Brasil) | LTR |
ru | Русский | LTR |
ar | العربية | RTL |
hi | हिन्दी | LTR |
如何更改语言
- 单击右上角的旗帜图标以打开下拉菜单。
- Pick your language from the list.
- 页面将重新加载;所有 UI 标签、日期和货币格式都会保留。
- 选择同时保存在用户帐户和 cookie 中(1 年)。
/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.test、manager@fleethub.test、dept@fleethub.test、accountant@fleethub.test、driver@fleethub.test。安装或播种时启用演示数据。 Spatie 权限——管理员可以微调每个权限。
车辆管理
创建新车
- 导航至车辆→新车。
- 填写车牌号、品牌、型号、年份、燃料类型、类别和部门。
- 添加购买日期和价格(折旧和 TCO 所需)。
- 上传照片(多个文件,每个文件最大 5 MB — 在移动设备上自动压缩)。
- 保存 — 自动生成车辆代码和二维码。
车辆代码格式
默认值:{PREFIX}-{YEAR}-{NNNN},例如VH-2026-0001。在设置→车队→车辆代码前缀进行配置。
批量导入
- 在车辆页面点击导入。
- 下载 Excel 模板。
- 填写数据 — 必填列:
license_plate、make、model、category_name。 - 上传文件。
二维码&快速扫描
每辆车在创建时都会自动生成一个二维码。扫描即可打开公共车辆页面,或在应用程序中对已登录的驾驶员执行快速操作。
打印二维码标签
- 单个标签:点击车辆上的打印机图标。
- 批量打印:选择多辆车辆→打印二维码标签。 A4 尺寸,每行 2 个标签。
在应用程序中扫描
在车辆页面点击扫描二维码。允许摄像头。适用于具有 HTTPS 或 localhost 的现代浏览器。
公共汽车页面
每辆车都有一个位于 /v/{vehicle_code} 的公共 URL — 无需登录即可快速识别。
- 在设置→车队→公共车辆页面进行配置:公共,需要登录或关闭。
- 访客模式仅查看基本信息(车牌、品牌/型号)。快速操作需要登录。
- 更改
APP_URL后,按重新生成设置中的所有二维码。
程序
请求一辆车
员工发送使用车辆的请求。流:requested → approved → returned(或rejected)。车队经理或审批部门负责人。该日历显示整个车队的车辆预订。逾期归还车辆并发送警告电子邮件。
车辆交接
- 请求获得批准后,在司机取车前创建下车交接。
- 记录时钟、完成检查表、在二维图表上标记损坏、附加照片和数字签名。
- 保存并下载 PDF 交付报告以供记录。
- 还车时,创建交接 — 比较状态、更新仪表、删除司机分配。
- 完成入库交接会将申请标记为已归还,并将车辆状态设为可用。
折旧和总体拥有成本
FleetHub 使用三种方法之一计算车辆折旧。折旧与燃料和费用日志一起包含在 TCO 表中。
| 方法 | 食谱 | 使用时 |
|---|---|---|
| 直线 | (Cost - Salvage) / Useful Life | 最受欢迎;每年均匀折旧 |
| 余额逐渐减少 | 2 / Useful Life × Book Value | 折旧快;税务目的 |
| 生产单位 | (本期公里数/预计总公里数)×(购买价格-清算价值) | 车辆预计总公里数(根据时钟) |
默认继承自车辆类别。 current_value 每月通过 fleethub:update-vehicle-values 进行更新。 TCO = 购买价格 + 所选期间的车辆总成本。
自定义字段
管理 → 自定义字段允许向车辆添加无限的属性:
- 类型:文本、数字、日期、选择、文本区域、文件、复选框
- 范围:适用于所有类别或特定车辆类别
- 排列:拖放手柄
- 保存车辆时检查必填字段
报告
七个综合车队报告,可从“报告”菜单访问:
- 总 TCO — 车辆和整个车队的总拥有成本
- 折旧表 — 按车辆折旧,带文件导出
- 维护成本 — 按车辆、类型和月份划分的支出
- 燃油消耗和成本 — 公里/升趋势,不规则标记
- 车辆请求使用 — 一段时间内的车辆预订率
- 合规期满 — 车辆证件和驾照即将过期
- 各部门车辆分配 — 各部门车辆及使用情况
所有报告均支持通过页面顶部的按钮导出Excel和PDF。
Webhook 集成
当发生重要的车队事件时,FleetHub 可以通知外部服务。
可用性事件
vehicle.created,vehicle.updated,vehicle.deletedrequisition.approved,requisition.rejected,requisition.overdue,requisition.returnedhandover.completedcompliance.expiring,compliance.expiredmaintenance.due,maintenance.overdue,maintenance.completedfleet_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:00 | fleethub:send-requisition-overdue-alerts | 请求已获批准,但在截止日期后尚未付款 |
| 每日 08:30 | fleethub:send-maintenance-reminders | 提醒维护即将到期 |
| 每日 09:00 | fleethub:send-compliance-expiry-alerts | 合规性将于 14/30/7/1 天后到期 |
| 每日 09:30 | fleethub:send-driver-license-alerts | 警告驾驶执照即将过期 |
| 每月 1 日 02:00 | fleethub:update-vehicle-values | 根据折旧更新车辆 current_value |
| 每日 03:00 | fleethub:recalculate-fleet-health-score | 重新计算并缓存舰队健康点 |
升级指南
FleetHub v1.0.0 是 CodeCanyon 上的首次发布。
故障排除
存储上“权限被拒绝”
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_code、vehicles.license_plate、vehicles.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 移动优先,上传时压缩图像
笔记
使用的开源库
- Laravel 11 — MIT
- Vue 3 — MIT
- Inertia.js — MIT
- Tailwind CSS — MIT
- Spatie Permission, Media Library, Activitylog — MIT
- Phosphor Icons — MIT (duotone weight)
- ApexCharts — MIT
- html5-qrcode — Apache 2.0
- Simple QrCode — MIT
- Laravel Excel — MIT
- Laravel DomPDF — MIT