Schwerwiegender PHP-Fehler:Klasse „MyApp\Chat“ nicht in /MyApp/chat-server.php gefunden
-
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
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 verschiebencomposer.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.