プッシャーパッケージをインストールすると、「クラス 'プッシャー'が見つかりません」というエラーが発生しました。
Claudioの診断は正しく、名前空間Pusherはバージョン3で追加されました。 Laravelファイルを変更することは、推奨されるソリューションではありません。
より良い方法は、config/app.php
にエイリアスを作成することです。 「aliases」キーの下で、これを「サードパーティエイリアス」セクションの配列に追加します。
'Pusher' => Pusher\Pusher::class,
Pusherのバージョン3では、Pusher\Pusherの名前空間が変更されていることに気付きました。 composerで設定した場合、.env、BROADCAST_DRIVER = pusherを設定すると、そのエラーが表示されます。ログを確認すると、このファイルのどこに問題があるかがわかります。
'vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php "
。画像のようにプッシャーの代わりにプッシャー\プッシャーの参照を変更する必要があります:
次に、関数PusherBroadCasterを見つけ、Pusher\Pusherの参照プッシャーを変更します。
vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php
(OPが質問に次の回答を投稿しました。根本的な問題は、バージョン3の pusher-php-server が名前空間を導入するため、use Pusher\Pusher
。)
次のコマンドを作成します。
namespace App\Console\Commands;
use Illuminate\Support\Facades\File;
use Illuminate\Console\Command;
class FixPusher extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'fix:pusher';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Fix Pusher namespace issue';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$broadcastManagerPath = base_path('vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php');
$pusherBroadcasterPath = base_path('vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php');
$contents = str_replace('use Pusher;', 'use Pusher\Pusher;', File::get($broadcastManagerPath));
File::put($broadcastManagerPath, $contents);
$contents = str_replace('use Pusher;', 'use Pusher\Pusher;', File::get($pusherBroadcasterPath));
File::put($pusherBroadcasterPath, $contents);
}
}
それから加えて "php artisan fix:pusher"
からcomposer.json
ファイル:
"post-update-cmd": [
"php artisan fix:pusher",
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"
]
vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php
そして「Use Pusher」を「Use Pusher/Pusher」に変更します。