【问题标题】:Pusher fails to connect in Laravel 5.8Pusher 在 Laravel 5.8 中无法连接
【发布时间】:2019-10-14 13:50:41
【问题描述】:

我将 Pusher 与 laravel 5.4 一起使用,没有问题,但现在我尝试使用 laravel 5.8,但出现以下错误。我已经尝试了我能想到的一切,甚至将encrypted 更改为false 以防万一。我三次检查了我的推送凭据。

Laravel 版本5.8

PHP版本7.2.18

操作系统OSX

我遇到的错误

$response = $this->pusher->trigger(
            $this->formatChannels($channels), $event, $payload, $socket, true
        );

        if ((is_array($response) && $response['status'] >= 200 && $response['status'] <= 299)
            || $response === true) {
            return;
        }

        throw new BroadcastException(
            is_bool($response) ? 'Failed to connect to Pusher.' : $response['body']
        );

我的 ENV 文件

BROADCAST_DRIVER=pusher
PUSHER_APP_ID=XXXXXX
PUSHER_APP_KEY=XXXXXXXXXXXXXXXXXXXX
PUSHER_APP_SECRET=XXXXXXXXXXXXXXXXXXXX
PUSHER_APP_CLUSTER=us2

我的活动档案

<?php

namespace App\Events;

use App\ChatRoomMessage;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class NewMessage implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;


    /**
     * Create a new event instance.
     *
     * @param ChatRoomMessage $chatRoomMessage
     * @return void
     */
    public function __construct()
    {

    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('message');
    }
}

我的路线

Route::get('/broadcast', function() {
    event(new \App\Events\NewMessage);
});

【问题讨论】:

  • 我也有同样的问题。你修好了吗?
  • @HVD 不,我从未完成该项目,因为我找不到任何解决方案。如果我发现任何更新,我计划重新访问该项目,我会确保让你知道。如果您发现任何解决方案,请告诉我。我将不胜感激。
  • 问题已解决。您可以尝试从此处link 下载 cacert。然后打开 php.ini 并将 ;curl.cainfo = 更改为 curl.cainfo = "下载的 cacert 的路径" (curl.cainfo = "C:\wamp64\bin\ php\php7.2.14\extras\ssl\cacert-2019-05-15.pem")
  • NopeNopeNopeNope

标签: php laravel pusher laravel-5.8


【解决方案1】:

如何解决在 Mac 上使用 Laravel Valet 和 Php7.2 或更高版本时无法连接到 Pusher ——————————————————————————————————————————————————— ---

注意:我决定写这篇文章是因为我认为其他人不应该花 5 个小时来解决这个问题,我已经这样做了。

Server : Valet;

OS: Mac Mojave;

PHP Version: 7.2;

在我的情况下,将 forceTLS 设置为 false 有效,但我不喜欢该解决方案。同时补充:

'curl_options' => [
  CURLOPT_SSL_VERIFYHOST => 0,
  CURLOPT_SSL_VERIFYPEER => 0,
]

我的 broadcasting.php 文件有效,但由于某种原因,我也不相信这个解决方案。

所以我决定通过从https://curl.haxx.se/ca/cacert.pem 下载 CA 包并将 cacert.pem 从下载文件夹移动到 /usr/local/etc/openssl@1.1/certs 来完成工作(在我的情况下,我安装了 openssl1. 1 仅使用自制软件,因为我尝试了各种我在网上找到的东西来完成这项工作,但现在我知道我不需要 openssl1.1 你可以使用你已经拥有的 openssl 文件夹)所以 cacert 文件的完整路径变为 / usr/local/etc/openssl@1.1/certs/cacert.pem 打开 php.ini —————————

从您的终端输入 php --ini 以找到加载的 php.ini 的路径(在您选择的编辑器中打开它;我有时使用 nano)重要:从 PHP 7.2 (Win 64) 开始,此指令不会即使已设置,也显示在 phpinfo() 中。 (相比之下,openssl.cafile 指令将显示,如果它设置为完全相同的路径)。

所以现在在您的 php.ini 中将以下内容设置为:(注意:替换路径以指示可以在系统上找到这些文件的位置) openssl.cafile = “/usr/local/etc/openssl@1.1/certs /cacert.pem'openssl.capath = “/usr/local/etc/openssl@1.1/certs”注意:因为我使用的是php7.2,所以我不必将curl.cainfo设置为任何内容;最初我花了很多时间尝试使用对我不起作用的 curl.info 方法,所以在我的最终配置中,我通过在它前面放置一个分号来评论它(;curl.cainfo =“/usr/local/etc /openssl@1.1/certs/cacert.pem”)

在此之后,您应该运行代客重启,这将重启一些代客服务,但我意识到即使在代客重启后,我的新 php.ini 更改也不会在我执行 phpinfo() 时反映出来;

最后你应该通过输入 brew services restart php72 重新启动 php(注意:我是通过 homebrew 安装 php 的,所以如果你没有,你必须以不同的方式重新启动 php)

希望这会有所帮助。即使它不能完全解决您的问题,它也肯定会给您一些尝试的想法,就像我利用其他人从一页到另一页的微小想法来提出我的解决方案一样。

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 2019-10-22
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2019-09-12
    • 2020-10-03
    相关资源
    最近更新 更多