PHP 치명적인 오류:/MyApp/chat-server.php에서 'MyApp\Chat' 클래스를 찾을 수 없습니다.

StackOverflow https://stackoverflow.com//questions/23012574

  •  21-12-2019
  •  | 
  •  

문제

Ratchet 애플리케이션 데모를 실행하려고 하는데 파일을 실행할 수 없습니다.

이것은 내 파일 구조입니다

/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/

터미널에서 chat-server 파일을 실행할 때마다 다음 오류가 발생합니다.

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

이 문제를 해결하는 방법을 알려주십시오.

메모: 전체 코드 세부정보는 이 페이지에 있습니다.

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

이 질문을 받았지만 여전히 해당 질문에 대한 답변이 없습니다.C:\wamp\www\bin\chat-server.php에서 'MyChat\Chat' 클래스를 찾을 수 없습니다.

도움이 되었습니까?

해결책

자동 로딩의 기본 경로는 작곡가.json 파일의 위치입니다. /var/www/src/MyApp/, 자동 로딩은 이를 기본으로 사용합니다.

귀하의 경우에는 다음과 같이 말합니다. MyApp 네임스페이스는 다음에서 찾을 수 있습니다. src 디렉토리(즉, /var/www/src/MyApp/src).사실이 아닙니다. 파일이 /var/www/src/MyApp/src/MyApp/Chat.php 존재하지 않습니다.

이 문제는 3가지 방법으로 해결할 수 있습니다.

  • 움직이는 composer.json - 당신은 이동할 수 있습니다 composer.json 파일을 제출하다 /var/www, 그것을 베이스로 사용할 수 있도록;
  • 자동 로딩 업데이트 중 (PSR-4 사용) - PSR-0 대신 PSR-4를 사용하여 다음과 같이 구성할 수도 있습니다. "autoload": { "psr-4": { "MyApp\\": "" } };
  • 파일 재구성 - 파일 구조를 다음과 같이 변경할 수도 있습니다.

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

다른 팁

composer.json 파일과 루트에 공급 업체 폴더가 없으면 작동하지 않습니다.또한 벤더 폴더 (및 하위 폴더)를 만지지 마십시오.폴더 구조는 다음과 같아야합니다.

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

마지막으로 composer.json을 업데이트 한 후 업데이트를 실행하십시오.

php composer.phar update
.

이렇게하면 작동합니다.

자동로드 해야하는 클래스의 기본 경로를 언급해야합니다.

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

및 실행

작곡가 덤프 - 자동로드

파일을 먼저 자동로드 시도 :

$ composer update
.

여전히 작동하지 않으면 require 'chat.php'; 파일의 시작 부분에있는 chat-server.php 라인을 포함시킵니다.그것은 나를 위해 일했습니다.

나는이 문제를 몇 시간 동안 씨름하고 몇 가지 패키지를 놓치고 있음을 발견했습니다.이 명령으로 해결할 수있었습니다.

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

지금 실행 후에 보았던 것의 그림은 다음과 같습니다. 설치된 패키지

이 도움이되기를 바랍니다!

나의 경우, 하루 반가운 후에, 나는이 줄을 놓쳤기 때문에 오류가 발생했기 때문입니다.

require 'vendor/autoload.php';
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top