Laravel 5.3 升级 - BroadcastServiceProvider 错误

3

我尝试将 laravel 5.35.2 升级,但在执行 php artisan clear-compiled 命令时出现以下错误:

类 App\Providers\BroadcastServiceProvider 包含1个抽象方法,因此必须声明为抽象类或实现剩余方法(Illuminate\Support\ServiceProvider::register)。

然而,在我的本地环境中升级时没有遇到这样的问题。

config/broadcasting.php 的内容如下:

<?php
return [
    'default' => env('BROADCAST_DRIVER', 'log'),
    'connections' => [
        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_KEY'),
            'secret' => env('PUSHER_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
        ],
        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],
        'log' => [
            'driver' => 'log',
        ],
    ],
];

app/Providers/BroadcastServiceProvider.php的作用如下:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Broadcast;

class BroadcastServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Broadcast::routes();
        Broadcast::channel('App.User.{userId}', function ($user, $userId) {
            return (int) $user->id === (int) $userId;
        });
    }
}

.env 文件则是这样的:

CACHE_DRIVER=file
SESSION_DRIVER=file
#BROADCAST_DRIVER=pusher
PUSHER_KEY=someKey
PUSHER_SECRET=SomeSecrete
PUSHER_APP_ID=SomeId

我尝试将默认的广播驱动设置为“log”,但似乎没有起作用。
无论我运行什么命令,例如:php artisan cache:clearphp artisan config:clearphp artisan view:clearphp artisan clear-compiled,我都会遇到同样的错误。
我还尝试使用composer dump-autoload,它可以正常工作,但如果我再次运行php artisan clear-compiled,还是会遇到同样的错误。
请帮助我。

有任何专家在场吗? - Dev
2个回答

1

看起来你没有真正更新框架,因为Illuminate\Support\ServiceProvider::register方法存在于5.2中而不是5.3
请仔细检查你的更新


可能是因为缓存或其他问题,因为我在composer.json中更新了“laravel/framework”:“5.3.*”。不确定如何解决这个问题。 - Dev
@Dev,你运行了 composer update 吗?你可能会不小心使用了 composer install,导致没有更新。 - Oleg Arkhipov
"name": "laravel/framework", "version": "v5.3.29", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", "reference": "someid" }, - Dev
@Dev,文件中是否真的包含了ServiceProvider类(在vendor目录中)中提到的旧的register方法?如果没有,那么可能是缓存的问题。也许尝试删除bootstrap/cache目录下的内容。 - Oleg Arkhipov
我无法将此视为试错,因为我正在生产环境中工作。 - Dev
显示剩余2条评论

1

在更新到laravel 5.3之前,我通过运行以下artisan命令来解决此错误composer升级。

这些命令是:

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

然后执行。
composer update

它将解决升级到 laravel 5.3 时出现的错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接