Erreur fatale PHP :Classe 'MyApp\Chat' introuvable dans /MyApp/chat-server.php
-
21-12-2019 - |
Question
J'essaie d'exécuter la démo de l'application Ratchet mais je n'arrive pas à exécuter le fichier
Ceci est la structure de mes fichiers
/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.*" } }
Le dossier du fournisseur existe à cet emplacement
/var/www/src/MyApp/vendor/
Chaque fois que j'exécute le fichier du serveur de discussion dans le terminal, j'obtiens l'erreur suivante
PHP Fatal error: Class 'MyApp\Chat' not found in /MyApp/chat-server.php
S'il vous plaît, aidez-moi à résoudre ce problème
Note: Les détails complets du code existent dans cette page
http://socketo.me/docs/hello-world
Cette question a été posée mais toujours pas de réponse à cette question égalementClasse 'MyChat\Chat' introuvable dans C:\wamp\www\bin\chat-server.php
La solution
Le chemin principal du chargement automatique est l'emplacement du fichier composer.json, donc s'il réside dans /var/www/src/MyApp/
, le chargement automatique l'utilisera comme base.
Dans votre cas, vous dites le MyApp
l'espace de noms peut être trouvé dans le src
répertoire (ce qui signifie /var/www/src/MyApp/src
).Ce n'est pas vrai, puisque le fichier /var/www/src/MyApp/src/MyApp/Chat.php
N'existe pas.
Vous pouvez résoudre ce problème de 3 manières différentes :
- En mouvement
composer.json
- Vous pouvez déplacer lecomposer.json
fichier à/var/www
, pour pouvoir l'utiliser comme base ; - Mise à jour du chargement automatique (en utilisant PSR-4) - Vous pouvez également utiliser PSR-4 au lieu de PSR-0 et le configurer comme
"autoload": { "psr-4": { "MyApp\\": "" } }
; Réorganiser vos fichiers - Vous pouvez également modifier la structure du fichier comme suit :
/var/www/src/MyApp/ src/MyApp/ Chat.php composer.json
Autres conseils
Si vous n'avez pas le fichier Compositeur.json et le dossier du fournisseur à la racine, cela ne fonctionnera pas.De plus, ne touchez pas le dossier du fournisseur (et les sous-dossiers).La structure de dossiers doit être comme ceci:
/composer.json
/composer.phar
/vendor/[misc]
/src/MyApp/Chat.php
Enfin, après la mise à jour du compositeur.json, assurez-vous d'exécuter une mise à jour:
php composer.phar update
De cette façon, cela fonctionnera.
Vous devez mentionner la trajectoire de base de vos classes qui doivent être téléchargées automatiquement:
{
"autoload": {
"psr-4": {
"MyApp\\": "src/MyApp/"
}
},
"require": {
"cboden/ratchet": "^0.4.0",
"react/zmq": "0.2.*|0.3.*"
}
}
et exécuter
Compositeur Dump-AutoLoad
Essayez d'abord de charger automatiquement les fichiers avec :
$ composer update
Si cela ne fonctionne toujours pas, incluez la ligne require 'chat.php';
, juste au début du chat-server.php
déposer.Cela a fonctionné pour moi.
J'ai lutté avec ce problème pendant des heures et j'ai constaté que j'avais manqué quelques forfaits.J'ai été capable de le réparer avec cette commande:
php composer.phar install --no-dev -o
Voici une photo de ce que j'ai vu après avoir couru: Packages installés
J'espère que cela vous aidera!
Dans mon cas, après avoir passé une demi-journée, j'ai réalisé que l'erreur était parce que j'ai raté cette ligne:
require 'vendor/autoload.php';