PHP致命的なエラー:/myapp/chat-server.phpに含まれていないクラス 'myapp \ chat'が見つかりません
-
21-12-2019 - |
質問
ラチェットアプリケーションのデモを実行しようとしていますが、ファイルを実行できません。
これは私のファイル構造
です/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.*" } }.
Vendorフォルダがこの場所に存在する
/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
に移動して、基本として使用できるようにします。 - 自動ロードを更新する(PSR-4を使用) - PSR-0の代わりにPSR-4を使用し、それを
"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 Dump-AutoLoad
最初にファイルを自動ロードしてみてください。
$ composer update
.
まだ動作していない場合は、require 'chat.php';
ファイルの先頭にある線chat-server.php
を含めます。それは私のために働いた。
私は何時間もこの問題を取り除き、私は数枚のパッケージを逃したことを発見しました。私はこのコマンドでそれを修正することができました:
php composer.phar install --no-dev -o
.
これは私が走った後に見たものの写真です: インストールパッケージ
これが助けに役立つことを願っています!
私の場合、半日を過ごした後、私はこの行を逃したからというエラーがあることに気づいた:
require 'vendor/autoload.php';
.