You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用php artisan backup:run报错:BackupHasFailed::$exception未定义

解决Spatie Laravel Backup的BackupHasFailed::$exception未定义错误

这个错误是因为你的项目中监听BackupHasFailed事件的代码,尝试访问了事件类中不存在的$exception属性,通常是版本兼容问题导致事件结构和监听器代码不匹配。

解决步骤:

1. 定位事件监听器

打开app/Providers/EventServiceProvider.php,找到$listen数组中绑定Spatie\Backup\Events\BackupHasFailed的监听器类,示例:

protected $listen = [
    Spatie\Backup\Events\BackupHasFailed::class => [
        App\Listeners\LogBackupFailure::class,
    ],
];

2. 检查并调整监听器代码

打开对应的监听器类(比如LogBackupFailure.php),如果代码中存在$event->exception的调用,替换为当前版本BackupHasFailed事件实际包含的属性:

  • 例如在spatie/laravel-backup v8及以上版本,BackupHasFailed事件包含$message和$backupDestination属性,监听器可修改为:
public function handle(\Spatie\Backup\Events\BackupHasFailed $event)
{
    \Illuminate\Support\Facades\Log::error("数据库备份失败: {$event->message}");
}

3. 调试确认事件结构

如果不确定当前版本事件的属性,可在监听器中临时打印事件对象查看:

public function handle(\Spatie\Backup\Events\BackupHasFailed $event)
{
    dd($event); // 输出事件的所有属性,根据实际内容调整代码
}

4. 版本兼容性检查

运行以下命令查看当前使用的spatie/laravel-backup版本:

composer show spatie/laravel-backup

根据版本确认BackupHasFailed事件的属性结构,确保监听器代码与版本匹配。

内容的提问来源于stack exchange,提问作者blue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:32:54