PHP致命的なエラー:/myapp/chat-server.phpに含まれていないクラス 'myapp \ chat'が見つかりません

StackOverflow https://stackoverflow.com//questions/23012574

  •  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';
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top