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