2014-04-11 9 views
13

Ich versuche, die Ratchet Anwendung Demo zu laufen, aber ich kann die DateiPHP Fatal error: Class ‚MyApp Chat‘ nicht in /MyApp/chat-server.php gefunden

Dies ist meine Dateistruktur nicht ausführen

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

Vendor-Ordner wird in diesem Ort existieren

/var/www/src/MyApp/vendor/ 

Jedes Mal, wenn ich die Chat-Server-Datei im Terminal am Ausführen bekam ich folgende Fehlermeldung

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

Bitte helfen Sie mir, wie Sie diesen

Hinweis zu beheben: Die vollständige Code Details sind existieren auf dieser Seite

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

wurde diese Frage gestellt, aber noch keine Antwort auf diese Frage zu Class 'MyChat\Chat' not found in C:\wamp\www\bin\chat-server.php

Antwort

8

Der Hauptweg für den automatischen Laden ist die Lage der composer.json Datei, also wenn die in /var/www/src/MyApp/ lebt, wird der automatische Laden verwenden, die als ein Base.

In Ihrem Fall, sagen Sie, dass der Namespace MyApp im Verzeichnis src gefunden werden kann (was /var/www/src/MyApp/src bedeutet). Das stimmt nicht, da die Datei /var/www/src/MyApp/src/MyApp/Chat.php nicht existiert.

Sie dieses Problem in 3 verschiedene Möglichkeiten lösen können:

  • bewegen composer.json - Sie können die composer.json Datei zu /var/www, bewegen zu können, verwenden, die als Basis;
  • Aktualisierung Autoloading (mit PSR-4) - Sie können auch PSR-4 anstelle von PSR-0 verwenden und konfigurieren Sie als "autoload": { "psr-4": { "MyApp\\": "" } };
  • reorganisieren Ihre Dateien - Sie können auch die Dateistruktur ändern:

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

Wenn Sie nicht über die composer.json Datei und den Hersteller-Ordner an der Wurzel, es gewann‘ t arbeiten. Berühren Sie auch nicht den Herstellerordner (und Unterordner). Die Ordnerstruktur muss so aussehen:

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

Schließlich, nach der composer.json aktualisieren, stellen Sie sicher, ein Update auszuführen:

php composer.phar update 

Auf diese Weise wird es funktionieren.

+1

das Tutorial nicht sagen, nach der Aktualisierung der JSON-Datei den Update-Befehl ausführen . Vielen Dank. – Jerther

3

Try selbstladende die Dateien zuerst mit:

$ composer update 

Wenn es immer noch nicht funktioniert, dann gehört die Linie require 'chat.php';, gerade am Anfang der chat-server.php Datei. Es hat für mich funktioniert.

+0

Ja! 'Composer Update' hat für mich funktioniert. – user5510975

+0

Arbeitete für mich, danke! – Marcky

4

Sie müssen Basispfad Ihrer Klassen erwähnen, die automatisch geladen werden müssen:

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

Und laufen

Composer dump-autoload

Verwandte Themen