Laravel Spark 已于 2018 年停止维护,不兼容 Laravel ≥9.x、PHP 8.1+ 及现代工具链;官方 installer 下架,构建流程与 Node.js ≥16 冲突;推荐改用 sanctum + cashier + tenancy 等现代组合替代。

Laravel Spark 已于 2018 年正式停止维护,官方在 Laravel 5.7 发布后终止了所有更新与支持。你现在看到的任何“Spark 安装教程”“Spark 收费模式配置”都基于已废弃的技术栈,无法在现代 Laravel(≥9.x)中运行,也不兼容 PHP 8.1+、Composer 2.5+ 或当前主流前端工具链。
如果你正尝试用 spark install 命令初始化项目,它会失败——因为 laravel/spark-installer 的 Composer 包早已从 Packagist 下架,且其依赖的 guzzlehttp/guzzle v6、league/flysystem v1 等组件与 Laravel 10/11 冲突严重。
spark install 命令根本跑不起来怎么办
- 运行
spark install时提示Command "spark" is not defined:说明全局安装的laravel/spark-installer没生效,或 Composer 全局 bin 目录未加入$PATH - 即使强行用旧版 Composer(v1)装上 installer,后续执行也会卡在
npm install—— 因为 Spark 内置的gulp+Vue 1.x构建流程与 Node.js ≥16 不兼容 -
php artisan migrate报错Base table or view not found: 1146 Table 'spark.teams' doesn't exist:不是迁移没跑,是 Spark 的 migration 文件里硬编码了teams表,但模型绑定和中间件注册逻辑在 Laravel 8+ 中已被重构,Spark::configure()调用直接抛Call to undefined method
替代方案不是“怎么修 Spark”,而是“换什么”
- 如果你需要多租户 + 订阅管理 + 团队协作基础能力:直接用
laravel/sanctum+spatie/laravel-permission+laravel/cashier(支持 Stripe/Braintree/Paddle) - 如果要快速搭 SaaS 骨架:考虑
laravel-tenancy/tenancy(数据库/Schema 隔离)或stancl/tenancy(更活跃),配合cashier-paddle处理账单 - Vue 前端不要碰 Spark 自带的
resources/assets/js/spark目录——那些Vue.component('spark-billing', ...)是 Vue 1 语法,连v-model的修饰符都不支持,强行升级会触发大量 runtime warning 甚至白屏
Stripe Webhook 配置别照抄 Spark 文档
Spark 的 spark-webhook 路由是写死在服务提供者里的,现代做法应使用 cashier 提供的 Route::stripeWebhooks('webhook/stripe'),并确保:
-
STRIPE_WEBHOOK_SECRET从 Stripe Dashboard 复制,不是 Spark 后台生成的旧 token - Webhook endpoint 必须是公网可访问地址(本地开发用
ngrok http 8000,别信文档里说的 “localhost:8000 works”) -
App\Providers\EventServiceProvider中需手动注册WebhookReceived事件监听器,Spark 的自动绑定机制在 Laravel 9+ 中已失效
真正卡住人的从来不是“怎么配 Spark”,而是发现 .env 里填了十项 Stripe 配置,却收不到任何 webhook 事件——因为底层 Illuminate\Http\Request 在 Laravel 10 中默认拒绝非 JSON Content-Type 的 POST,而 Stripe 发来的是 application/x-www-form-urlencoded,必须显式加 ->except(['webhook/stripe']) 到 VerifyCsrfToken 中间件。


















