Lorsque j'ai installé le package Pusher, j'ai reçu une erreur "Classe 'Pusher' introuvable".
Le diagnostic de Claudio est correct, le namespace Pusher a été ajouté dans la version 3; mais changer les fichiers Laravel n'est pas une solution recommandée.
Un meilleur moyen consiste à créer un alias dans config/app.php
. Sous la clé 'aliases', ajoutez ceci au tableau de la section "Alias de tiers":
'Pusher' => Pusher\Pusher::class,
(OP a donné la réponse suivante à la question. Le problème sous-jacent est que la version 3 de pusher-php-server introduit un espace de noms et requiert donc maintenant use Pusher\Pusher
.)
Créez cette commande:
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);
}
}
Ajoutez ensuite "php artisan fix:pusher"
au fichier composer.json
:
"post-update-cmd": [
"php artisan fix:pusher",
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"
]
Avec la version 3 de Pusher, j'ai réalisé que l'espace de nom de Pusher\Pusher avait été modifié. Si configure par composer lorsque vous définissez le fichier .env, BROADCAST_DRIVER = pusher, cela indique cette erreur. En consultant le journal, vous pouvez savoir où se trouve le problème, situé dans ce fichier:
'vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php "
. Il est nécessaire de changer les références pour Pusher\Pusher au lieu de Pusher, comme dans l'image:
recherchez ensuite la fonction PusherBroadCaster et modifiez le poussoir de référence pour Pusher\Pusher.
vendor/laravel/framework/src/Illuminate/Diffusion/Diffuseurs/PusherBroadcaster.php
Il suffit d'aller au vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php
.__ et de changer "Utiliser le poussoir" en "Utiliser le poussoir/pousseur";