PHP خطأ فادح:لم يتم العثور على الفئة "MyApp\Chat" في /MyApp/chat-server.php

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/

عندما أقوم بتنفيذ ملف خادم الدردشة في الوحدة الطرفية، أحصل على الخطأ التالي

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

الرجاء مساعدتي في كيفية حل هذه المشكلة

ملحوظة: تفاصيل الكود الكاملة موجودة في هذه الصفحة

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

تم طرح هذا السؤال ولكن لا يوجد حتى الآن إجابة لهذا السؤال أيضًالم يتم العثور على الفئة "MyChat\Chat" في C:\wamp\www\bin\chat-server.php

هل كانت مفيدة؟

المحلول

المسار الرئيسي للتحميل التلقائي هو موقع ملف الملحن.json، لذا إذا كان موجودًا فيه /var/www/src/MyApp/, ، سيستخدم التحميل التلقائي ذلك كقاعدة.

في حالتك، أنت تقول MyApp يمكن العثور على مساحة الاسم في src الدليل (والذي يعني /var/www/src/MyApp/src).هذا غير صحيح، لأن الملف /var/www/src/MyApp/src/MyApp/Chat.php ليس موجود.

يمكنك حل هذه المشكلة بثلاث طرق مختلفة:

  • متحرك composer.json - يمكنك تحريك composer.json ملف ل /var/www, لتتمكن من استخدام ذلك كقاعدة؛
  • تحديث التحميل التلقائي (باستخدام PSR-4) - يمكنك أيضًا استخدام PSR-4 بدلاً من PSR-0 وتكوينه كـ "autoload": { "psr-4": { "MyApp\\": "" } };
  • إعادة تنظيم الملفات الخاصة بك - يمكنك أيضًا تغيير بنية الملف إلى:

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

نصائح أخرى

إذا لم يكن لديك ملف Composer.json ومجلد البائع في الجذر، فلن يعمل ذلك.أيضا، لا تلمس مجلد البائع (والمجلدات الفرعية).يجب أن يكون بنية المجلد مثل هذا:

giveacodicetagpre.

أخيرا، بعد تحديث الملحن .json، تأكد من تشغيل تحديث:

giveacodicetagpre.

بهذه الطريقة سوف تعمل.

عليك أن تذكر المسار الأساسي لفئاتك التي تحتاج إلى التوصيل تلقائيا:

giveacodicetagpre.

وتشغيل

composer dump-autoload

حاول تحميل الملفات تلقائيًا أولاً باستخدام:

$ composer update

إذا كان لا يزال لا يعمل، فقم بتضمين السطر require 'chat.php';, ، فقط في بداية chat-server.php ملف.عملت معي.

أنا مصارعة مع هذه المشكلة لساعات ووجدت أنني كنت في عداد المفقودين بضع حزم.كنت قادرا على إصلاحه مع هذا الأمر:

giveacodicetagpre.

إليك صورة لما رأيته بعد التشغيل: الحزم المثبتة

آمل أن يساعد هذا!

في حالتي، بعد قضاء نصف يوم، أدركت أن الخطأ كان لأنني فاتني هذا الخط:

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top