PHP 치명적인 오류:/MyApp/chat-server.php에서 'MyApp\Chat' 클래스를 찾을 수 없습니다.
-
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';
.