找不到接口“ Ratchet \ MessageComponentInterface”

时间:2020-08-20 23:59:39

标签: php codeigniter websocket composer-php ratchet

这是我的控制者:

<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Homepage extends CI_Controller
{
    public function index()
    {
        // Load package path
        $this->load->add_package_path(FCPATH . 'vendor/takielias/codeigniter-websocket');
        $this->load->library('Codeigniter_websocket');
        $this->load->remove_package_path(FCPATH . 'vendor/takielias/codeigniter-websocket');

        // Run server
        $this->codeigniter_websocket->set_callback('auth', array($this, '_auth'));
        $this->codeigniter_websocket->set_callback('event', array($this, '_event'));
        $this->codeigniter_websocket->run();
    }
}

这是我收到的完整错误:

An uncaught Exception was encountered
Type: Error

Message: Interface 'Ratchet\MessageComponentInterface' not found

Filename: vendor\takielias\codeigniter-websocket\libraries\Codeigniter_websocket.php

Line Number: 190

Backtrace:

File: application\controllers\youtube.php
Line: 10
Function: library

File: index.php
Line: 315
Function: require_once

我在composer.json中得到了这个

"require": {
        "takielias/codeigniter-websocket": "^1.0",
        "php": ">=5.3.7"
    },

它已经与composer install一起安装。那为什么不起作用?

this question的答案没有帮助,并且没有选择最佳答案,因此我认为提问者没有解决他们的问题。

一个答案是:

在定义命名空间之后立即添加以下代码段:

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

但是我还没有定义任何名称空间,所以我不知道这有什么用。

另一个答案是说要将此内容添加到composer.json

"autoload": {
        "psr-4": {
            "MyApp\\": "src"
        }
    },

但是我没有名为MyApp的文件夹(我有一个文件夹application),我不知道psr-4是什么意思。同样,答案似乎并没有帮助,或者假设我比我知道的更多。

0 个答案:

没有答案