找不到php类文件,即使它存在

时间:2017-08-17 05:38:30

标签: php class websocket phpwebsocket

所以我正在尝试在linux实例上使用php设置Web套接字,并且有两个文件。这两个文件都在我的/ var / www / html目录中。第一个名为Chat.php,包含以下代码:

<?php
namespace MyApp;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;

class Chat implements MessageComponentInterface {
    public function onOpen(ConnectionInterface $conn) {
    }

    public function onMessage(ConnectionInterface $from, $msg) {
    }

    public function onClose(ConnectionInterface $conn) {
    }

    public function onError(ConnectionInterface $conn, \Exception $e) {
    }
}

?>

第二个名为chat-server.php并包含以下代码:

<?php
use Ratchet\Server\IoServer;
use MyApp\Chat;

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

$server = IoServer::factory(
    new Chat(),
    8084
);

$server->run();

?>

当我尝试运行chat-server.php时,收到以下错误消息:

PHP Fatal error: Class 'MyApp\Chat' not found in /var/www/html/chat-server.php on line 8

很明显,当我尝试发起new Chat()时,它不喜欢它,因为它找不到类。为什么不呢?

1 个答案:

答案 0 :(得分:0)

我建议您在首次编辑composer.json文件后重新生成Composer自动加载器(autoload.php),方法是在autoload属性下添加以下内容:

"psr-4": {"MyApp\\": "/"}

这将定义命名空间与目录之间的新映射。 然后,要重新生成自动加载脚本,只需键入:

composer dumpautoload -o

此外,要求自动装带器应放在脚本的顶部。 有关更多详细信息,请查看作曲家关于自动加载的官方文档:https://getcomposer.org/doc/01-basic-usage.md#autoloading