Класс MyChat \ Chat не найден в C: \ wamp \ www \ bin \ chat-server.php

Я пытаюсь реализовать базовое приложение чата из http://socketo.me/docs/hello-world, однако я продолжаю получать эту ошибку. Я пытался перемещать файлы, но безуспешно, но я совершенно уверен, что помещаю файлы не в нужное место. Я совершенно не знаком с композитором, веб-сокетами и psr-0, и мне еще многое предстоит узнать о PHP. Вот мое дерево путей и мои источники:

C:\wamp\www\
        bin
           chat-server.php
        src
            MyChat
                Chat.php
        vendor
           {dependencies}+autoload.php
        composer.json
        composer.phar
        composer.lock

Chat.php

<?php
namespace MyChat;
require dirname(__DIR__) . '\vendor\autoload.php';
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
class Chat implements MessageComponentInterface
{
    protected $clients;
    function __construct()
    {
        $this->clients=new \SplObjectStorage();
    }
    function onOpen(ConnectionInterface $conn)
    {
        $this->clients->attach($conn);
        echo "New connection! ({$conn->resourceId})\n";
    }
    function onClose(ConnectionInterface $conn)
    {
        echo "Connection closed: {$conn->resourceId} \n";
        $this->clients->detach($conn);
    }
    function onError(ConnectionInterface $conn, \Exception $e)
    {
        echo "An error has occured: {$e->getMessage()}. Closing connection... \n";
        $conn->close();
    }
    function onMessage(ConnectionInterface $from, $msg)
    {
        $receivers=count($this->clients)-1;
        foreach($this->clients as $client)
        {
            if($client!=$from)
            {
                $client->send($msg);
            }
        }
    }
}

chat-server.php

<?php
require dirname(__DIR__) . '\vendor\autoload.php';
use Ratchet\Server\IoServer;
use MyChat\Chat;
$server= IoServer::factory (new Chat() ,8080,'0.0.0.0');//0.0.0.0 is default, means accept all connections
$server->run();

composer.json

{
    "require": {
        "cboden/Ratchet": "0.2.*"
    },
    "autoload": {
        "psr-0": {
            "MyChat": "src"
        }
    }
}

Мой php.exe находится в C: \ wamp \ bin \ php \ php5.4.12. Я был бы очень благодарен за предложение, я не могу понять, где я ошибаюсь.


person Mihai Bujanca    schedule 11.08.2013    source источник
comment
Вы добавили MyChatBundle в app / AppKernel.php?   -  person mattexx    schedule 11.08.2013
comment
@mattexx У меня нет каталога приложений, поэтому очевидно, что нет AppKernel.php, нигде в руководстве ничего не говорится об этом, как и в репозитории проекта на github нет каталога приложений. Я опубликовал полное дерево своего проекта (кроме каталога поставщика с зависимостями)   -  person Mihai Bujanca    schedule 12.08.2013
comment
Можете ли вы опубликовать точную команду, которую вы используете для запуска серверного скрипта? Вы работаете с www или bin?   -  person mattexx    schedule 12.08.2013
comment
Проверьте брандмауэр маршрутизации локальной сети, это могут быть порты диапазона, такие как 8080. Или ваша клиентская машина, отличная от серверной, проверьте обе стороны.   -  person ShahRokh    schedule 12.08.2013
comment
@mattexx php bin / chat-server.php - это команда, которую я использую, как указано в документации.   -  person Mihai Bujanca    schedule 12.08.2013
comment
@ShahrokhMoghimi Сервер файлового чата явно найден, потому что выдается ошибка (класс 'MyChat \ Chat' не найден в C: \ wamp \ www \ bin \ chat-server.php в строке 5) - где я создаю экземпляр класс чата. Даже если порт будет заблокирован, должна быть ошибка, связанная с этим, а не класс не найден. Опять же, я совершенно уверен, что расположение файлов неправильное.   -  person Mihai Bujanca    schedule 12.08.2013
comment
Я копирую вставленные ваши скрипты с тем же деревом путей и запускаю их без проблем (кроме строки 3 в Chat.php, которую я удалил, но я сомневаюсь, что это ваша проблема). Честно говоря, попытка сделать это в Windows чуть не свела меня с ума, я бы посоветовал делать все это в Linux, так как это в 100 раз проще и чище.   -  person Cains    schedule 19.08.2013
comment
@Cains У меня проблемы с установкой PhpStorm на моем Ubuntu, и мне очень нравится PhpStorm, я бы не стал его оставлять. Это все еще дает мне класс, который не найден. В любом случае спасибо;) Я недавно начал использовать linux, но пока не для серьезной разработки приложений, пока не привыкну к этому   -  person Mihai Bujanca    schedule 19.08.2013
comment
Что ж, мне было бы плохо, если бы я не сказал вам, что вы похожи на меня несколько недель назад, запускаете серверы и делаете все на Windows и почти не очищаете Linux, потому что я никогда по-настоящему не использовал его. Но позвольте мне сказать вам, что как только вы совершите полный скачок и переведете все на Linux, вы никогда не вернетесь назад. Я могу гарантировать вам, что изучение Ubuntu и получение решения ваших проблем с установкой PhpStorm в Ubuntu будет намного проще, чем пытаться заставить все это работать прямо в Windows. Всего два цента. Желаю вам удачи, Рэтчет отлично подходит, когда вы в этом разбираетесь.   -  person Cains    schedule 20.08.2013


Ответы (1)


Это немного поздно, но похоже, что вы используете композитор, поэтому вам может потребоваться запустить этот установщик?

Из своего каталога попробуйте запустить каждый из них и посмотрите, поможет ли это:

./composer.phar install --dev
./composer.phar update
person Matt Dodge    schedule 06.09.2013