Я пытаюсь запустить демонстрацию приложения Ratchet, но я не могу выполнить файл
Это моя файловая структура
/var/www/src/MyApp/ /var/www/src/MyApp/chat.php /var/www/src/MyApp/chat-server.php
<? PHP использовать Ratchet \ Server \ IoServer; используйте MyApp \ Chat; #require "chat.php"; require 'vendor / autoload.php'; $ server = IoServer :: factory ( новый чат (), 8080 ); $ Server-> Run ();
/var/www/src/MyApp/composer.json
{ "autoload": { "psr-0": { «MyApp»: «src» } }, "require": { "cboden / Ratchet": "0.3. *" } }
Папка поставщика существует в этом месте
/var/www/src/MyApp/vendor/
Всякий раз, когда я выполняю файл chat-server в терминале, я получил следующую ошибку
PHP Fatal error: Class 'MyApp\Chat' not found in /MyApp/chat-server.php
Пожалуйста, помогите мне, как решить эту проблему.
Примечание . Полная информация о кодах существует на этой странице.
http://socketo.me/docs/hello-world
Этот вопрос был задан, но ответа на этот вопрос еще нет. Класс «MyChat \ Chat» не найден в C: \ wamp \ www \ bin \ chat-server.php
Основным путем для автозагрузки является расположение файла composer.json, поэтому, если он живет в /var/www/src/MyApp/
, автозагрузка будет использовать это в качестве базы.
В вашем случае вы говорите, что пространство имен MyApp
можно найти в каталоге src
(что означает /var/www/src/MyApp/src
). Это неверно, поскольку файл /var/www/src/MyApp/src/MyApp/Chat.php
не существует.
Вы можете решить эту проблему тремя способами:
composer.json
– вы можете переместить файл composer.json
в /var/www
, чтобы иметь возможность использовать его как базу; "autoload": { "psr-4": { "MyApp\\": "" } }
; Реорганизация ваших файлов. Вы также можете изменить структуру файла на:
/var/www/src/MyApp/ src/MyApp/ Chat.php composer.json
Если у вас нет файла composer.json и папка поставщика у root, это не сработает. Кроме того, не прикасайтесь к папке поставщика (и подпапкам). Структура папок должна быть такой:
/composer.json /composer.phar /vendor/[misc] /src/MyApp/Chat.php
Наконец, после обновления composer.json обязательно запустите обновление:
php composer.phar update
Таким образом, это сработает.
Вы должны упомянуть базовый путь ваших классов, который должен быть автоматически загружен:
{ "autoload": { "psr-4": { "MyApp\\": "src/MyApp/" } }, "require": { "cboden/ratchet": "^0.4.0", "react/zmq": "0.2.*|0.3.*" } }
И запустите
Автозагрузка композитора
Сначала попробуйте выполнить автозагрузку файлов:
$ composer update
Если он все еще не работает, require 'chat.php';
строку, require 'chat.php';
, только в начале файла chat-server.php
. Это сработало для меня.