2014-04-11 14 views
13

Tôi cố gắng để chạy demo ứng dụng Ratchet nhưng tôi không thể chạy filePHP Fatal error: Class 'MyApp Trò chuyện' không tìm thấy trong /MyApp/chat-server.php

Đây là cấu trúc tập tin của tôi

/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 thư mục được tồn tại ở vị trí này

/var/www/src/MyApp/vendor/ 

Bất cứ khi nào tôi đang thực hiện các tập tin trò chuyện-server tại nhà ga tôi đã nhận lỗi sau

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

Xin hãy giúp tôi làm thế nào để giải quyết này

Lưu ý: Các chi tiết mã hoàn chỉnh là tồn tại trong trang này

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

Câu hỏi này đã được hỏi nhưng vẫn không có câu trả lời cho câu hỏi đó quá Class 'MyChat\Chat' not found in C:\wamp\www\bin\chat-server.php

Trả lời

8

Con đường chính cho việc tự động load là vị trí của các tập tin composer.json, vì vậy nếu sống trong /var/www/src/MyApp/ thì tự động load sẽ sử dụng như một căn cứ.

Trong trường hợp của bạn, bạn có thể tìm thấy không gian tên MyApp trong thư mục src (có nghĩa là /var/www/src/MyApp/src). Điều đó không đúng, vì tệp /var/www/src/MyApp/src/MyApp/Chat.php không tồn tại.

Bạn có thể giải quyết vấn đề này trong 3 cách khác nhau:

  • Moving composer.json - Bạn có thể di chuyển các tập tin composer.json-/var/www, để có thể sử dụng như là cơ sở;
  • Cập nhật tự động tải (sử dụng PSR-4) - Bạn cũng có thể sử dụng PSR-4 thay vì PSR-0 và định cấu hình nó là "autoload": { "psr-4": { "MyApp\\": "" } };
  • Tổ chức lại các file của bạn - Bạn cũng có thể thay đổi cấu trúc file:

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

Nếu bạn không có các tập tin và thư mục composer.json nhà cung cấp tại gốc, nó đã giành' t làm việc. Ngoài ra, không chạm vào thư mục nhà cung cấp (và thư mục con). Cấu trúc thư mục phải là như thế này:

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

Cuối cùng, sau khi cập nhật composer.json, hãy chắc chắn để chạy một bản cập nhật:

php composer.phar update 

Bằng cách này nó sẽ làm việc.

+1

hướng dẫn không nói để chạy các lệnh cập nhật sau khi cập nhật tệp json . Cảm ơn nhiều. – Jerther

3

Hãy thử tự động load các tập tin đầu tiên với:

$ composer update 

Nếu nó vẫn không hoạt động sau đó bao gồm dòng require 'chat.php';, chỉ vào đầu của tập tin chat-server.php. Nó làm việc cho tôi.

+0

Có! 'bản cập nhật nhà soạn nhạc' hoạt động cho tôi. – user5510975

+0

Làm việc cho tôi, cảm ơn bạn! – Marcky

4

Bạn cần phải đề cập đến con đường cơ sở của các lớp học của bạn mà cần phải được tự động nạp:

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

Và chạy

Composer dump-autoload

Các vấn đề liên quan