Php 推进器未能连接到Laravel 5.8中

Php 推进器未能连接到Laravel 5.8中,php,laravel,pusher,laravel-5.8,Php,Laravel,Pusher,Laravel 5.8,我在Laravel5.4中使用了Pusher,没有问题,但是现在我尝试使用Laravel5.8,我得到了以下错误。我已经尝试了我能想到的一切,甚至把加密的更改为假以防万一。我三次检查了我的推送员凭证 Laravel版本5.8 PHP版本7.2.18 OSOSX 我犯了一个错误 $response = $this->pusher->trigger( $this->formatChannels($channels), $event, $payload, $s

我在Laravel5.4中使用了Pusher,没有问题,但是现在我尝试使用Laravel5.8,我得到了以下错误。我已经尝试了我能想到的一切,甚至把
加密的
更改为
以防万一。我三次检查了我的推送员凭证

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']
        );
我的事件文件

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

如何修复在Mac上使用Php7.2或更高版本的Laravel代客泊车时无法连接到推进器的问题 -----------------------------------------------------

NB:我决定写这篇文章是因为我认为其他人不应该花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包并将cacert.pem从下载文件夹移动到/usr/local/etc来实现这一点/openssl@1.1/证书(在我的例子中,我使用自制软件安装openssl1.1只是因为我尝试了在线找到的各种方法来实现这一点,但现在我知道我不需要openssl1.1,您可以使用您已有的openssl文件夹)因此cacert文件的完整路径变成/usr/local/etc/openssl@1.1/证书/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/证书/cacert.pem'
openssl.capath=“/usr/local/etc/openssl@1.1/证书“
请注意:因为我使用的是php7.2,所以我不必将curl.cainfo设置为任何值;最初我花了很多时间尝试使用curl.info方法,但这对我来说不起作用,所以在我的最终配置中,我在它前面放了一个分号(;curl.cainfo=“/usr/local/etc/openssl@1.1/证书/cacert.pem“

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

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


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

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

OS: Mac Mojave;

PHP Version: 7.2;
'curl_options' => [
  CURLOPT_SSL_VERIFYHOST => 0,
  CURLOPT_SSL_VERIFYPEER => 0,
]