首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何纠正棘轮中的[PHP Fatal error: Interface ' ratchet \MessageComponentInterface‘not found ]

如何纠正棘轮中的[PHP Fatal error: Interface ' ratchet \MessageComponentInterface‘not found ]
EN

Stack Overflow用户
提问于 2015-12-20 13:04:54
回答 2查看 4.2K关注 0票数 4

我正在尝试从YouTube的教程中创建一个基本的websocket聊天,当我运行

代码语言:javascript
复制
php bin/server.php

致命错误:在第6行的/var/www/html/websocket/bin/ line .php中找不到接口'Ratchet\MessageComponentInterface‘

我的chat.php代码如下:

代码语言:javascript
复制
<?php
namespace MyApp;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;

class chat implements MessageComponentInterface
    {
        protected $clients;
        public function __construct()
            {
                $this->clients=new \SplObjectStorage;
            }

        public function onOpen(ConnectionInterface $conn)
            {
                $this->clients->attach($conn);
            }

        public function onClose(ConnectionInterface $conn)
            {
                $this->clients->detach($conn);
            }

        public function onMessage(ConnectionInterface $conn,$msg)
            {
                foreach($this->clients as $client){
                    if($client !==$conn){
                        $client->send($msg);
                    }
                }
            }

        public function onError(ConnectionInterface $conn, \Exception $e)
            {
                echo "the following error occured: ".$e->getMessage();
                 $conn->close();
            }
    }

Server.php代码:

代码语言:javascript
复制
<?php
require 'chat.php';
require __DIR__ .'/vendor/autoload.php';
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;

$server=IoServer::factory(new HttpServer(new WsServer (new chat())) , 8080);
$server->run();

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2017-04-08 00:55:21

在使用Ratchet\MessageComponentInterface之前,包含包含自动加载的所有定义的autoload.php文件。

在定义名称空间后立即包含以下代码片段:

require dirname(__DIR__) . '/vendor/autoload.php';

票数 3
EN

Stack Overflow用户

发布于 2018-06-15 22:49:53

转到composer.json并更改

代码语言:javascript
复制
{
    "require": {
        "cboden/ratchet": "^0.4"
    }
}

代码语言:javascript
复制
{
    "autoload": {
        "psr-4": {
            "MyApp\\": "src"
        }
    },
    "require": {
        "cboden/ratchet": "^0.4"
    }
}

并打开带有管理的升级命令更新作曲器,如下所示

代码语言:javascript
复制
composer update

您必须位于composer.json所在的同一文件夹目录中

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34378161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档