Domanda

Sto cercando di eseguire la demo dell'applicazione Ratchet ma non riesco a eseguire il file

Questa è la struttura del mio file

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

La cartella del fornitore esiste in questa posizione

/var/www/src/MyApp/vendor/

Ogni volta che eseguo il file del server di chat nel terminale ricevo il seguente errore

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

Per favore aiutami a risolvere questo problema

Nota: I dettagli completi del codice sono presenti in questa pagina

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

Questa domanda è stata posta ma ancora nessuna risposta anche per quella domandaClasse 'MyChat\Chat' non trovata in C:\wamp\www\bin\chat-server.php

È stato utile?

Soluzione

Il percorso principale per il caricamento automatico è la posizione del file composite.json, quindi se è presente in /var/www/src/MyApp/, il caricamento automatico lo utilizzerà come base.

Nel tuo caso, dici il MyApp lo spazio dei nomi può essere trovato in src directory (che significa /var/www/src/MyApp/src).Non è vero, dal momento che il file /var/www/src/MyApp/src/MyApp/Chat.php non esiste.

Puoi risolvere questo problema in 3 modi diversi:

  • In movimento composer.json - Puoi spostare il composer.json file a /var/www, per poterlo utilizzare come base;
  • Aggiornamento del caricamento automatico (usando PSR-4) - Puoi anche usare PSR-4 invece di PSR-0 e configurarlo come "autoload": { "psr-4": { "MyApp\\": "" } };
  • Riorganizzare i tuoi file - Puoi anche modificare la struttura del file in:

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

Altri suggerimenti

Se non si dispone del file compositore.json e della cartella del fornitore a root, non funzionerà.Inoltre, non toccare la cartella del fornitore (e le sottocartelle).La struttura della cartella deve essere così:

/composer.json
/composer.phar
/vendor/[misc]
/src/MyApp/Chat.php
.

Infine, dopo aver aggiornato il compositore.json, assicurati di eseguire un aggiornamento:

php composer.phar update
.

In questo modo funzionerà.

Devi menzionare il percorso di base delle tue classi che devono essere automaticamente effettuati:

{
    "autoload": {
        "psr-4": {
            "MyApp\\": "src/MyApp/"
        }
    },
    "require": {
        "cboden/ratchet": "^0.4.0",
        "react/zmq": "0.2.*|0.3.*"
    }
}
.

e run

.

Compositore Dump-Autoload

Prova a riagganciare i file prima con:

$ composer update
.

Se ancora non funziona, includere la linea require 'chat.php';, proprio all'inizio del file chat-server.php.Ha funzionato per me.

Ho lottato con questo problema per ore e ho scoperto che mi mancavano alcuni pacchetti.Sono stato in grado di risolverlo con questo comando:

php composer.phar install --no-dev -o
.

Ecco una foto di ciò che ho visto dopo aver corso: Pacchetti installati

Spero che questo aiuti!

Nel mio caso, dopo aver trascorso mezza giornata, ho capito che l'errore era perché ho perso questa linea:

require 'vendor/autoload.php';
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top