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

Était-ce utile?

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 le composer.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';

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top