Laravel 5.8 中 Pusher 连接失败

2024-03-14

我在 laravel 5.4 中使用 Pusher ,没有任何问题,但现在我尝试使用 laravel 5.8 ,但出现以下错误。我已经尝试了我能想到的一切,甚至改变了encrypted to false万一。我三次检查了我的推送者凭据。

Laravel 版本5.8

PHP版本7.2.18

OS 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');
    }
}

My route

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

如何修复在 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 文件有效,但由于某种原因我也不相信这个解决方案。

所以我决定通过下载 CA 捆绑包来使事情顺利进行https://curl.haxx.se/ca/cacert.pem https://curl.haxx.se/ca/cacert.pem并将 cacert.pem 从下载文件夹移至 /usr/local/etc/[电子邮件受保护] /cdn-cgi/l/email-protection/certs (在我的例子中,我使用自制程序安装了 openssl1.1,只是因为我尝试了网上找到的各种东西,只是为了使这项工作正常进行,但现在我知道我不需要 openssl1.1,你可以使用已有的 openssl 文件夹)因此 cacert 文件的完整路径变为 /usr/local/etc/[电子邮件受保护] /cdn-cgi/l/email-protection/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/[电子邮件受保护] /cdn-cgi/l/email-protection/certs/cacert.pem'openssl.capath =“/usr/local/etc/[电子邮件受保护] /cdn-cgi/l/email-protection/certs”请注意:因为我使用的是 php7.2,所以我不必将curl.cainfo 设置为任何内容;最初我花了很多时间尝试使用curl.info方法,但这对我不起作用,所以在我的最终配置中,我通过在其前面放置一个分号来对其进行评论(;curl.cainfo =“/usr/local/etc” /[电子邮件受保护] /cdn-cgi/l/email-protection/certs/cacert.pem”)

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 5.8 中 Pusher 连接失败 的相关文章

随机推荐

  • 加载.csv文件时如何将当前系统时间戳插入db2数据库基列

    下面的类将把 csv 导入到数据库表中 它工作正常 现在我需要更新同一个表中的另一列 其中当前系统时间戳需要获取 当该程序在数据库表的相应列中执行时得到更新 示例 在 Db2 表中 主题列为 英语社会数学时间戳 在 CSV 文件中只有 3
  • 实体框架代码优先迁移保留现有数据

    我正在使用 EF 6 1 并且对包含生产环境中的数据的现有数据库使用代码优先方法 是否有可能迁移模型更改并保留现有客户的数据 是的 但是 根据具体情况 更改的复杂性 它可能会很复杂 概述 https learn microsoft com
  • dojo 中的状态服务器端过滤

    我正在 dojo 1 10 版本的增强网格中进行服务器端过滤 Here https dojotoolkit org reference guide 1 10 dojox grid EnhancedGrid plugins Filter ht
  • 如何自动删除项目的所有system.out.println语句,包括所有多行Sop语句[重复]

    这个问题在这里已经有答案了 实际上我想自动化删除所有的过程System out println 在将项目交付给客户之前 对整个项目进行陈述 怎么做 按 ctrl H 转到文件搜索 将包含文本填充为System out println 文件名
  • 将 std::bind 与成员函数一起使用,该参数是否使用对象指针?

    使用时std bind要绑定成员函数 第一个参数是对象this指针 然而 它可以将对象作为指针传递 也可以不传递 例如 请参见以下程序 include
  • 使用转换后的边界进行布局

    我已经缩放了窗格中的一个节点 但窗格的布局考虑了边界 没有任何转换 我希望它考虑到转换后的边界 例如 和代码 import javafx application Application import javafx geometry Pos
  • 如何在 Postgres.app 中降级/使用以前版本的 Postgres DB

    我已经从这里安装了 Postgres app http postgresapp com http postgresapp com 几天以前 它附带 Postgres 9 4 4 今天我发现我使用的软件官方只支持Postgres 9 3 9
  • Javascript导入包无法解析模块说明符

    我正在尝试导入使用 npm 下载的模块 我的 json 文件是 name nodejs web app1 version 0 0 0 description NodejsWebApp1 main server js author name
  • 致命异常:iOS 上的 NSInternalInconsistencyException 崩溃

    几天来我一直在尝试重新创建和研究这个问题 但我不会去任何地方 这是堆栈跟踪 任何人都可以阐明正在发生的事情吗 我认为这与远程通知有关 不久前 当我安装 firebase sdk 时 问题就开始了 当时事故发生的次数并不多 但现在 事故发生的
  • 带有 pandas 数据框的子图

    我想使用 pandas 数据框 称为 df 在图上创建多个子图 我原来的情节在这里 df plot x month y number title open by month color blue 我在本网站的 使用图形和子图 部分尝试了多次
  • 我如何定义“其余宽度”?

    这是我的代码 function tags input on focusout function var txt this value replace a z0 9 ig allowed characters if txt span span
  • 如何运行 Spark Java 程序

    我为 Spark 编写了一个 Java 程序 但是如何从 Unix 命令行运行和编译它 编译运行时是否必须包含任何 jar 结合官方步骤快速入门指南 https spark apache org docs latest quick star
  • D 中的枚举与不可变

    有什么区别 enum i 2 enum s Hello and immutable i 2 immutable s Hello 在 D 2 0 中 An enum是用户定义的类型 而不是变量 enum e 2 是一个 像这样的东西的简写en
  • 查找但不深入到包含搜索文件的目录

    我有几个由 pom xml 或类似配置的项目 我想使用 linux file 命令来定位这些项目 例如经过find name pom xml 然而 由于路径很深 这需要一些时间 我想用find prune当我已经找到文件时停止在子目录中搜索
  • 在哪里使用 Redux 处理计算属性?

    使用 Redux 时 存储应该是唯一的事实来源 并且没有冗余 假设商店的一部分代表有名字和年龄的人 传统面向对象编程中的 person 类可能如下所示 class Person constructor first last birthday
  • 抽象控件中的 VisualState

    我有一个抽象的 BaseControl 其中包含依赖项属性以及默认样式和 VisualState 我想在继承的控件中使用这些 VisualState 据我所知 设置继承控件的模板不会使 VisualState 访问它需要更新的 UIElem
  • 在 .net 5 控制台应用程序中利用用户机密

    我正在构建一个简单的控制台应用程序来处理大型 CSV 文件 SDK版本5 0 202我使用的是 Manjaro Linux CODE using System using System Text using TinyCsvParser us
  • Android 资源限定符 -sw#dp 与 -w#dp

    假设我正在为屏幕尺寸等于或大于 600dp 的设备开发不同的布局 我想使用 android 3 2 后的资源限定符 我创建了一个名为layout sw600dp并将我的布局放在那里 但同时我可以创建一个名为的文件夹layout w600dp
  • 查明文件是否已更改

    我想查明自上次启动 shell 脚本以来文件是否已被修改 也许可以通过创建布尔值或其他东西 也许可以将上次运行脚本的时间保存在一个文本文件中 下次启动脚本时它应该读取该文件 然后它应该找出哪些文件已更改 以便我可以检查是否有文件已使用以下内
  • Laravel 5.8 中 Pusher 连接失败

    我在 laravel 5 4 中使用 Pusher 没有任何问题 但现在我尝试使用 laravel 5 8 但出现以下错误 我已经尝试了我能想到的一切 甚至改变了encrypted to false万一 我三次检查了我的推送者凭据 Lara