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

السؤال

نشر

عند عمل clone لمشروع لارافيل نظام إدارة المحتوى https://github.com/HsoubAcademy/laravel_cms.git

ومن ثم عمل  composer update يظهر هذا الخطأ

Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

   Illuminate\Database\QueryException

  SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using passw
ord: NO) (SQL: select * from `permissions` where `name` in (edit-post, delete-po
st, add-post))

  at C:\Users\Mohsen\ALaravel\laravel_cms\vendor\laravel\framework\src\Illuminat
e\Database\Connection.php:760
    756▕         // If an exception occurs when attempting to run a query, we'll
 format the error
    757▕         // message to include the bindings with SQL, which will make th
is exception a
    758▕         // lot more helpful to the developer instead of just the databa
se's errors.
    759▕         catch (Exception $e) {
  ➜ 760▕             throw new QueryException(
    761▕                 $query, $this->prepareBindings($bindings), $e
    762▕             );
    763▕         }
    764▕     }

  1   [internal]:0
      Illuminate\Foundation\Application::Illuminate\Foundation\{closure}(Object(
App\Providers\AuthServiceProvider))

  2   C:\Users\Mohsen\ALaravel\laravel_cms\vendor\laravel\framework\src\Illumina
te\Database\Connectors\Connector.php:70
      PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'forge'@'loc
alhost' (using password: NO)")
Script @php artisan package:discover --ansi handling the post-autoload-dump even
t returned with error code 1

Screenshot2024-05-20224001.png.316af94fcc341f365d2591e32f6cfb60.png

وعند عمل الامر php artisan migrate --seed

يظهر هذا الخطأ

Screenshot2024-05-20224446.png.0138f5ac14a412761c38f96816e4d818.png

Recommended Posts

  • 0
نشر

المشروع يستعمل في ملف AuthServiceProvider.php الجدول permissions لإنشاء بعض البوابات (Gates) لتعريف التصريح لبعض العمليات ('edit-post', 'delete-post', 'add-post') لذلك ستحتاج مبدئياً إلى فتح الملف و تعطيل الأسطر:

Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) {
  Gate::define($per->name, function($user, $post) use ($per) {
    return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin());
  });
});

Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) {
  Gate::define($per->name, function($user) use ($per) {
    return $user->hasAllow($per->name) && $user->isAdmin();
  });
});

أي تعليقها:

/*
Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) {
  Gate::define($per->name, function($user, $post) use ($per) {
    return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin());
  });
});

Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) {
  Gate::define($per->name, function($user) use ($per) {
    return $user->hasAllow($per->name) && $user->isAdmin();
  });
});

*/

ثم إكمال عملية تهيئة المشروع:

php artisan key:generate

إنشاء قاعدة بيانات ثم ربط معلومات الإتصال بها في الملف env.

بعد ذلك تنفيذ أمر التهجير و البذر:

php artisan migrate:fresh --seed

يمكنك بعد ذلك الرجوع إلى الملف السابق وإزالة التعليق من الأسطر السابقة.

و أخيراً تشغيل المشروع

  • 0
نشر

لحل المشكلة يمكنك تعطيل الكود في ملف 'AuthServiceProvider.php' مؤقتا حتى يتم إنشاؤه بنجاح أثناء عملية الترحيل والبذر لأنه يستخدم جدول 'permissions' كما هو موضح هنا:

  /*
    Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) {
        Gate::define($per->name, function($user, $post) use ($per) {
            return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin());
        });
    });

    Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) {
        Gate::define($per->name, function($user) use ($per) {
            return $user->hasAllow($per->name) && $user->isAdmin();
        });
    });
    */

ثم قم بتشغيل الأمر التالي لإنشاء مفتاح التطبيق:

php artisan key:generate

ثم تأكد من إدخالك لمعلومات الاتصال الصحيحة في ملف `.env` مثلما هو موضح هنا:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=اسم_قاعدة_بياناتك
DB_USERNAME=اسم_مستخدم_قاعدة_بياناتك
DB_PASSWORD=كلمة_مرور_قاعدة_بياناتك

والآن يمكنك القيام بتشغيل الأمر التالي لترحيل الجداول وتعبئتها بالبيانات الأولية:
 

php artisan migrate:fresh --seed

وبعد الانتهاء من الترحيل والبذر بنجاح، افتح ملف `AuthServiceProvider.php` مرة أخرى وقم بإزالة التعليق عن الأسطر التي علقتها سابقا.
 

   Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) {
        Gate::define($per->name, function($user, $post) use ($per) {
            return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin());
        });
    });

    Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) {
        Gate::define($per->name, function($user) use ($per) {
            return $user->hasAllow($per->name) && $user->isAdmin();
        });
    });

وشغل المشروع مباشرة:

php artisan serve

ففي هذه العملية، قمنا بتعليق الكود مؤقتا لتجنب حدوث خطأ عند تشغيل الأوامر المتعلقة بتهيئة قاعدة البيانات. فالكود الذي يتم تعليقه يستخدم جدول permissions، وهو جدول لم يتم إنشاؤه بعد. تعليق الكود مؤقتا هنا سيسمح لك بإتمام عملية الترحيل والبذر بنجاح وبمجرد أن يتم إنشاء الجدول من خلال عملية الترحيل والبذر، يمكن إزالة التعليق وإعادة تفعيل الكود لتشغيله بشكل طبيعي.

  • 0
نشر
بتاريخ 20 ساعة قال سمير عبود:

المشروع يستعمل في ملف AuthServiceProvider.php الجدول permissions لإنشاء بعض البوابات (Gates) لتعريف التصريح لبعض العمليات ('edit-post', 'delete-post', 'add-post') لذلك ستحتاج مبدئياً إلى فتح الملف و تعطيل الأسطر:

Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) {
  Gate::define($per->name, function($user, $post) use ($per) {
    return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin());
  });
});

Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) {
  Gate::define($per->name, function($user) use ($per) {
    return $user->hasAllow($per->name) && $user->isAdmin();
  });
});

أي تعليقها:

/*
Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) {
  Gate::define($per->name, function($user, $post) use ($per) {
    return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin());
  });
});

Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) {
  Gate::define($per->name, function($user) use ($per) {
    return $user->hasAllow($per->name) && $user->isAdmin();
  });
});

*/

ثم إكمال عملية تهيئة المشروع:

php artisan key:generate

إنشاء قاعدة بيانات ثم ربط معلومات الإتصال بها في الملف env.

بعد ذلك تنفيذ أمر التهجير و البذر:

php artisan migrate:fresh --seed

يمكنك بعد ذلك الرجوع إلى الملف السابق وإزالة التعليق من الأسطر السابقة.

و أخيراً تشغيل المشروع

شكرا الحل ضبط ولكن بعد عمل إنشاء لحساب جديد يظهر هذا الخطأ 

Connection could not be established with host "mailhog:1025": stream_socket_client(): php_network_getaddresses: getaddrinfo for mailhog failed: No such host is known.

Screenshot2024-05-21202541.thumb.png.9e25da1bcacc1813e22d992f9e11b469.png

بتاريخ 20 ساعة قال سمير عبود:

المشروع يستعمل في ملف AuthServiceProvider.php الجدول permissions لإنشاء بعض البوابات (Gates) لتعريف التصريح لبعض العمليات ('edit-post', 'delete-post', 'add-post') لذلك ستحتاج مبدئياً إلى فتح الملف و تعطيل الأسطر:

Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) {
  Gate::define($per->name, function($user, $post) use ($per) {
    return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin());
  });
});

Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) {
  Gate::define($per->name, function($user) use ($per) {
    return $user->hasAllow($per->name) && $user->isAdmin();
  });
});

أي تعليقها:

/*
Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) {
  Gate::define($per->name, function($user, $post) use ($per) {
    return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin());
  });
});

Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) {
  Gate::define($per->name, function($user) use ($per) {
    return $user->hasAllow($per->name) && $user->isAdmin();
  });
});

*/

ثم إكمال عملية تهيئة المشروع:

php artisan key:generate

إنشاء قاعدة بيانات ثم ربط معلومات الإتصال بها في الملف env.

بعد ذلك تنفيذ أمر التهجير و البذر:

php artisan migrate:fresh --seed

يمكنك بعد ذلك الرجوع إلى الملف السابق وإزالة التعليق من الأسطر السابقة.

و أخيراً تشغيل المشروع

شكرا الحل ضبط ولكن بعد عمل إنشاء لحساب جديد يظهر هذا الخطأ 

Connection could not be established with host "mailhog:1025": stream_socket_client(): php_network_getaddresses: getaddrinfo for mailhog failed: No such host is known.

Screenshot2024-05-21202541.thumb.png.9e25da1bcacc1813e22d992f9e11b469.png

بتاريخ 20 ساعة قال سمير عبود:

المشروع يستعمل في ملف AuthServiceProvider.php الجدول permissions لإنشاء بعض البوابات (Gates) لتعريف التصريح لبعض العمليات ('edit-post', 'delete-post', 'add-post') لذلك ستحتاج مبدئياً إلى فتح الملف و تعطيل الأسطر:

Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) {
  Gate::define($per->name, function($user, $post) use ($per) {
    return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin());
  });
});

Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) {
  Gate::define($per->name, function($user) use ($per) {
    return $user->hasAllow($per->name) && $user->isAdmin();
  });
});

أي تعليقها:

/*
Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) {
  Gate::define($per->name, function($user, $post) use ($per) {
    return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin());
  });
});

Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) {
  Gate::define($per->name, function($user) use ($per) {
    return $user->hasAllow($per->name) && $user->isAdmin();
  });
});

*/

ثم إكمال عملية تهيئة المشروع:

php artisan key:generate

إنشاء قاعدة بيانات ثم ربط معلومات الإتصال بها في الملف env.

بعد ذلك تنفيذ أمر التهجير و البذر:

php artisan migrate:fresh --seed

يمكنك بعد ذلك الرجوع إلى الملف السابق وإزالة التعليق من الأسطر السابقة.

و أخيراً تشغيل المشروع

شكرا الحل ضبط ولكن بعد عمل إنشاء لحساب جديد يظهر هذا الخطأ 

Connection could not be established with host "mailhog:1025": stream_socket_client(): php_network_getaddresses: getaddrinfo for mailhog failed: No such host is known.

Screenshot2024-05-21202541.thumb.png.9e25da1bcacc1813e22d992f9e11b469.png

  • 0
نشر
بتاريخ 6 دقائق مضت قال Abdullah Baaqail:

شكرا الحل ضبط ولكن بعد عمل إنشاء لحساب جديد يظهر هذا الخطأ 

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

  • يُمكنك مثلاً إستخدام log:
MAIL_MAILER=log

وتعطيل باقي إعدادات البريد، في هذه الحالة عند إنشاء حساب سيتم إرسال رسالة التحقق إلى ملف laravel.log الموجود في المسار:

storage\logs\laravel.log

بعدها نسخ الرابط المُرسل هناك وفتحه على المتصفح ليتم تفعيل الحساب.

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...