ラチェットアプリケーションのデモを実行しようとしていますが、ファイルを実行できません
これは私のファイル構造です
/var/www/src/MyApp/
/var/www/src/MyApp/chat.php
/var/www/src/MyApp/chat-server.php
<?php use Ratchet\Server\IoServer; use MyApp\Chat; #require "chat.php"; require'vendor/autoload.php '; $ server = IoServer :: factory( new Chat()、 8080 ); $ server-> run();
/var/www/src/MyApp/composer.json
{ "autoload":{ "psr-0":{ "MyApp": "src" } }、 "require":{ "cboden/Ratchet": "0.3。*" } }
ベンダーフォルダはこの場所に存在します
/var/www/src/MyApp/vendor/
ターミナルでチャットサーバーファイルを実行しているときはいつでも、次のエラーが発生しました
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
が存在しないため、これは正しくありません。
この問題は、次の3つの方法で解決できます。
composer.json
の移動 -composer.json
ファイルを/var/www
に移動して、それをベースとして使用できるようにすることができます。"autoload": { "psr-4": { "MyApp\\": "" } }
として構成することもできます。ファイルの再編成-ファイル構造を次のように変更することもできます。
/var/www/src/MyApp/
src/MyApp/
Chat.php
composer.json
ルートにcomposer.jsonファイルとベンダーフォルダーがない場合、それは機能しません。また、ベンダーフォルダー(およびサブフォルダー)には触れないでください。フォルダ構造は次のようにする必要があります。
/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ダンプ-自動ロード
最初に次のコマンドでファイルを自動ロードしてみてください。
$ composer update
それでも機能しない場合は、require 'chat.php';
ファイルの先頭にchat-server.php
行を含めます。それは私のために働いた。
私はこの問題に何時間も取り組み、いくつかのパッケージが不足していることに気づきました。私はこのコマンドでそれを修正することができました:
php composer.phar install --no-dev -o
これは私が実行した後に見たものの写真です: インストールされたパッケージ
お役に立てれば!
私の場合、半日を費やした後、エラーは次の行を見逃したことが原因であることに気付きました。
require 'vendor/autoload.php';