gpt4 book ai didi

php - Pusher 无法在 Laravel 5.8 中连接

转载 作者:行者123 更新时间:2023-12-03 21:02:46 26 4
gpt4 key购买 nike

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

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

最佳答案

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

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

Server : Valet;

OS: Mac Mojave;

PHP Version: 7.2;

在我的情况下,将 forceTLS 设置为 false 有效,但我不喜欢该解决方案。还补充说:
'curl_options' => [
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
]

到我的 broadcast.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”)

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

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

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

关于php - Pusher 无法在 Laravel 5.8 中连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56352281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com