Schwerwiegender PHP-Fehler:Klasse „MyApp\Chat“ nicht in /MyApp/chat-server.php gefunden

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

  •  21-12-2019
  •  | 
  •  

Frage

Ich versuche, die Ratchet-Anwendungsdemo auszuführen, kann die Datei jedoch nicht ausführen

Das ist meine Dateistruktur

/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.*"
    }
}

Der Lieferantenordner ist an diesem Ort vorhanden

/var/www/src/MyApp/vendor/

Immer wenn ich die Chat-Server-Datei im Terminal ausführe, wird die folgende Fehlermeldung angezeigt

PHP Fatal error:  Class 'MyApp\Chat' not found in /MyApp/chat-server.php

Bitte helfen Sie mir, das Problem zu lösen

Notiz: Die vollständigen Codedetails finden Sie auf dieser Seite

http://socketo.me/docs/hello-world

Diese Frage wurde gestellt, aber auch auf diese Frage gab es noch keine AntwortKlasse „MyChat\Chat“ nicht in C:\wamp\www\bin\chat-server.php gefunden

War es hilfreich?

Lösung

Der Hauptpfad für das automatische Laden ist der Speicherort der Datei „composer.json“, also sofern diese vorhanden ist /var/www/src/MyApp/, das automatische Laden verwendet dies als Basis.

In Ihrem Fall sagen Sie das MyApp Namespace finden Sie im src Verzeichnis (was bedeutet /var/www/src/MyApp/src).Das stimmt nicht, da die Datei /var/www/src/MyApp/src/MyApp/Chat.php Existiert nicht.

Sie können dieses Problem auf drei verschiedene Arten lösen:

  • Ziehen um composer.json - Sie können das verschieben composer.json Datei an /var/www, um das als Basis verwenden zu können;
  • Automatisches Laden wird aktualisiert (mit PSR-4) – Sie können auch PSR-4 anstelle von PSR-0 verwenden und es als konfigurieren "autoload": { "psr-4": { "MyApp\\": "" } };
  • Reorganisieren Sie Ihre Dateien - Sie können die Dateistruktur auch wie folgt ändern:

    /var/www/src/MyApp/
        src/MyApp/
                Chat.php
        composer.json
    

Andere Tipps

Wenn Sie nicht über die Composer.Json-Datei und den Anbieterordner an der Root haben, funktioniert es nicht.Berühren Sie auch den Anbieterordner (und Unterordner) nicht.Die Ordnerstruktur muss so sein:

generasacodicetagpre.

Schließlich, nachdem Sie den Composer.json aktualisiert haben, stellen Sie sicher, dass Sie ein Update ausführen:

generasacodicetagpre.

so funktioniert es.

Sie müssen den Basispfad Ihrer Klassen erwähnen, die autologt werden müssen:

generasacodicetagpre.

und run

composer dump-autoload

Versuchen Sie, die Dateien zuerst zu autoloadieren mit:

generasacodicetagpre.

Wenn es immer noch nicht funktioniert, fügen Sie dann den Zeilengrafikodicetagcode, nur zu Beginn der generationspoDicetagcode-Datei ein.Es hat für mich gearbeitet.

Ich habe stundenlang mit diesem Problem geraten und fand, dass ich ein paar Pakete fehlte.Ich konnte es mit diesem Befehl beheben:

generasacodicetagpre.

Hier ist ein Bild von dem, was ich nach dem Laufen gesehen habe: installierte Pakete

hoffe das hilft!

In meinem Fall, nachdem ich nach einem halben Tag ausgegeben hatte, wurde mir klar, dass der Fehler war, weil ich diese Zeile verpasst habe:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top