我正在尝试使用Pusher构建一个实时聊天应用程序,基于此处的教程:https://pusher-community.github.io/real-time-laravel/chat/chat.html
在本地(Windows)一切似乎都运行良好,但是当我尝试将其部署在Linux服务器上时,情况不佳,并且收到以下错误:
Class pusher does not exist {"exception":"[object] (ReflectionException(code: -1): Class pusher does not exist at /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Container/Container.php:779)
[stacktrace]
#0 /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Container/Container.php(779): ReflectionClass->__construct('pusher')
#1 /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Container/Container.php(658): Illuminate\Container\Container->build('pusher')
#2 /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Container/Container.php(609): Illuminate\Container\Container->resolve('pusher', Array)
#3 /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(759): Illuminate\Container\Container->make('pusher', Array)
#4 /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(237): Illuminate\Foundation\Application->make('pusher')
#5 /home/tgbinfo/public_html/system/applications/erp2/example/app/Http/Controllers/ChatController.php(23): Illuminate\Support\Facades\Facade::__callStatic('make', Array)
#6 [internal function]: App\Http\Controllers\ChatController->__construct()
由 ChatController 的构造方法引起,特别是 App:make('pusher') 行:
public function __construct()
{
$this->pusher = App::make('pusher');
$this->user = Session::get('user');
$this->chatChannel = self::DEFAULT_CHAT_CHANNEL;
}
在Javascript中,事情仍然很好,我仍然得到连接到Pusher的正确消息。
Pusher : State changed : connecting -> connected with new socket ID ####
Pusher : Event sent : {"event":"pusher:subscribe","data":{"channel":"chat-1429-3653"}}
我已经在互联网上阅读并已经尝试了以下一些事情:
- 在引导/缓存文件夹上使用 chmod 777。
- 作曲家转储自动加载
- 清除工匠缓存和配置
- 使用作曲器重新安装推杆
- 已检查本地和服务器上 .env 文件中的差异,它们是相同的
- 添加了"推送器"=> 推送器\推送器::类,以使用应用程序的别名.php
相关 .env 代码:
BROADCAST_DRIVER=pusher
Composer.json:
"pusher/pusher-http-laravel": "^4.2",
广播.php:
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env( 'PUSHER_APP_CLUSTER' ),
'encrypted' => false,
],
],
关于如何解决此错误的任何想法?
您可能尚未更新对服务器的依赖关系。使用"作曲家安装"命令安装所有依赖项。然后用户"作曲家转储自动加载"以重新加载所有依赖项。
我已经解决了自己的问题,似乎bootstrap/cache
中的packages.php
和services.php
文件没有更新,即使在运行多个artisan cache:clear
和artistan config:cache
命令之后也是如此。最后,我删除了这两个文件并再次运行artisan cache:clear
。新生成的文件包含Laravel所需的推送器信息。