这是我的控制者:
<?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
是什么意思。同样,答案似乎并没有帮助,或者假设我比我知道的更多。