اذهب إلى المحتوى

السؤال

نشر

حاولت إنشاء مشروع جديد باستخدام Envoy ولكن عند التحديث ورفع المشروع عبر github أحصل على الخطأ التالي:

[ReflectionException] Class App\Http\Controllers\User\UpdateController does not exist

مع العلم أن الصف موجود وكان يعمل مسبقاً ضمن المشروع. وقمت بالبحث عن المشكلة وحللتها بتفريغ الكاش الخاص ب routes.

الآن ظهر لي خطأ آخر وهو:

PHP message: PHP Fatal error:  Uncaught ReflectionException: Class hash does not exist in /home/forge/default/envoyer/releases/20180306221058/bootstrap/cache/compiled.php:1479
Stack trace:
#0 /home/forge/default/envoyer/releases/20180306221058/bootstrap/cache/compiled.php(1479): ReflectionClass->__construct('hash')
#1 /home/forge/default/envoyer/releases/20180306221058/bootstrap/cache/compiled.php(1433): Illuminate\Container\Container->build('hash', Array)
#2 /home/forge/default/envoyer/releases/20180306221058/bootstrap/cache/compiled.php(2011): Illuminate\Container\Container->make('hash', Array)
#3 /home/forge/default/envoyer/releases/20180306221058/bootstrap/cache/compiled.php(1686): Illuminate\Foundation\Application->make('hash')
#4 /home/forge/default/envoyer/releases/20180306221058/bootstrap/cache/compiled.php(524): Illuminate\Container\Container->offsetGet('hash')
#5 /home/forge/default/envoyer/releases/20180306221058/bootstrap/

وإن هذه الأخطاء تظهر فقط عند التعامل مع github ومشاركة كود المشروع. فكيف يمكنني معالجة هذا الخطأ؟

Recommended Posts

  • 0
نشر

من الممكن ظهور هذه الأخطاء عند التعامل مع github أو عند تحديث إصدارات لارافيل، فيحدث تضارب مع النسخ المستخدمة في المكتبات ضمن المشروع.

من الممكن حل هذه الأخطاء عن طريق التأكد من الإصدارات التموافقة مع الإضافات المستخدمة وبأنها معرّفة بشكل جيّد ضمن المسار config/app.php:

'providers'       => [
 ..
    AnyProvider\Support\Laravel\AnyServiceProvider::class,

'aliases'         => [ 
..
    'AnyProvider'        => AnyProvider\Support\Laravel\Facade::class,

وضمن الملف composer.json في Envoyer بأن المكتبات مضمّنة في كل من require و require-dev في حال بيئة التطوير.

والمكان الأخير هو app/Providers/AppServiceProvider.php، يجب أيضاً تسجيل أي serviceProvider في حال احتاج ذلك:

public function boot()
    {
        $env = config('app.env');

        if ($env === 'local' || $env === 'testing') {
            .. dev only libraries
            $this->app->register(\AnyProvider\Iseed\AnyProvider::class);
        }
    }

وبعدها يمكن إجراء الأوامر التالية للتأكد من إجراء التحديثات اللازمة:

rm -rf bootstrap

composer dump-autoload

ولكن بعد تنفيذ هذه الأوامر يجب إجراء git revert لإعادة الملفات bootstrap الموجودة بين ملفات المشروع في github

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...