2014-04-11 10 views
13

मैं Ratchet आवेदन डेमो चलाने के लिए कोशिश कर रहा हूँ में नहीं मिला, लेकिन मैं फ़ाइलपीएचपी गंभीर त्रुटि: क्लास 'MyApp चैट' /MyApp/chat-server.php

पर अमल नहीं कर सकता यह मेरी फ़ाइल संरचना है

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

विक्रेता फ़ोल्डर इस स्थान में मौजूद है

+०१२३५१६४१० पूरा कोड विवरण हैं:
/var/www/src/MyApp/vendor/ 

जब भी मैं टर्मिनल में चैट सर्वर फ़ाइल को क्रियान्वित कर रहा हूँ मैं निम्न त्रुटि

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

कृपया मेरी मदद कैसे इस

नोट को हल करने मिला इस पृष्ठ में मौजूद है

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

यह सवाल पूछा गया था, लेकिन अभी भी उस सवाल के लिए कोई जवाब नहीं भी Class 'MyChat\Chat' not found in C:\wamp\www\bin\chat-server.php

उत्तर

8

autoloading के लिए मुख्य पथ composer.json फ़ाइल का स्थान है, इसलिए है कि अगर /var/www/src/MyApp/ में रहता है, autoloading का उपयोग करेगा कि एक के रूप में आधार।

अपने मामले में, आप कहते हैं कि MyApp नामस्थान src निर्देशिका (जिसका अर्थ है /var/www/src/MyApp/src) में पाया जा सकता है। यह सच नहीं है, क्योंकि फ़ाइल /var/www/src/MyApp/src/MyApp/Chat.php मौजूद नहीं है।

आप 3 अलग अलग तरीकों से इस समस्या को हल कर सकते हैं:

  • चलती composer.json - आप /var/www को composer.json फ़ाइल स्थानांतरित कर सकते हैं, उपयोग करने के लिए सक्षम होने के लिए है कि आधार के रूप में;
  • ऑटोलोडिंग (पीएसआर -4 का उपयोग करके) अपडेट करना - आप पीएसआर -0 के बजाय पीएसआर -4 का भी उपयोग कर सकते हैं और इसे "autoload": { "psr-4": { "MyApp\\": "" } } के रूप में कॉन्फ़िगर कर सकते हैं;
  • आपकी फ़ाइलों को पुनर्व्यवस्थित करने से - तुम भी फ़ाइल संरचना को बदल सकते हैं:

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

आप जड़ में composer.json फ़ाइल और विक्रेता फ़ोल्डर नहीं है, तो यह जीत लिया ' टी काम नहीं साथ ही, विक्रेता फ़ोल्डर (और उपफोल्डर) को स्पर्श न करें। फ़ोल्डर संरचना इस तरह होना चाहिए:

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

अंत में, composer.json को अद्यतन करने के बाद, सुनिश्चित करें कि एक अद्यतन चलाने के लिए करते हैं:

php composer.phar update 

इस तरह यह काम करेंगे।

+1

ट्यूटोरियल json फ़ाइल को अद्यतन करने के बाद अद्यतन आदेश को चलाने के लिए नहीं कहा । आपका बहुत बहुत धन्यवाद। – Jerther

3

के साथ पहली फ़ाइलों Autoloading प्रयास करें:

$ composer update 

यह अभी भी तो काम नहीं करता है लाइन require 'chat.php';, बस chat-server.php फ़ाइल की शुरुआत में शामिल हैं। यह मेरे लिए काम किया।

+0

हां! 'संगीतकार अद्यतन' मेरे लिए काम किया। – user5510975

+0

मेरे लिए काम किया, धन्यवाद! – Marcky

4

आप अपनी कक्षाओं autoloaded करने की आवश्यकता है के आधार पथ उल्लेख करना होगा: चलाने

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

और

Composer dump-autoload

संबंधित मुद्दे