معقول ترفع صورة البروفايل عندك في لارافيل، تحفظها بنجاح، وبعدين ما تطلع لك أصلًا؟! ليش لا يصير كذا، وكيف تحله بسرعة؟ خلنا نشوف.
هذي مشكلة شائعة جدًا عند مستخدمي لارافيل 11 مع حزمة Jetstream. تروح لملف إعدادات Jetstream، تفعّل ميزة صورة البروفايل، ترفع صورتك، تحفظ التعديلات… وبعدين الصورة نفسها ما تظهر لك إطلاقًا. تشوف مكانها فاضي أو أيقونة مكسورة بدل الصورة الفعلية. محبط، صح؟ بس الحل بسيط جدًا، وبياخذ منك دقيقتين بس.
طيب وش سبب المشكلة أصلًا؟
قبل ما نروح للحل مباشرة، خلني أوضح أكثر وش يصير خلف الكواليس. لارافيل يخزّن الصور المرفوعة (زي صور البروفايل) في مجلد التخزين الخاص بالمشروع، لكن هذا المجلد مو متاح للعامة بشكل افتراضي. عشان الصورة تظهر لك في المتصفح، لازم يكون فيه رابط رمزي (symbolic link) يربط بين مجلد التخزين الداخلي ومجلد public اللي يقدر أي زائر يوصله. لو هذا الرابط مو موجود، أو لو رابط تطبيقك مو مضبوط صح، الصورة ببساطة ما راح تظهر.
بس قبل ما نكمل، فيه خطوتين بس تحتاجهم عشان تصلح الموضوع بالكامل.
الخطوة الأولى: تأكد من رابط التخزين (Storage Link)
أول شي، لازم تتأكد إن رابط التخزين موجود وشغّال. افتح الترمنال من داخل مجلد المشروع الرئيسي (جذر المشروع)، وشغّل هذا الأمر:
php artisan storage:link
بعد تشغيل هذا الأمر، بيطلع لك إما رسالة خطأ أو رسالة نجاح. وهنا بالضبط تجيك المفاجأة: لو ظهرت لك رسالة خطأ تقول إن الرابط موجود مسبقًا، هذا شي طبيعي وما فيه أي مشكلة — يعني الرابط أصلًا مركب عندك. أما لو ما كان فيه رابط من الأساس، بتشوف رسالة نجاح تخبرك إن الرابط انربط الحين. مثال على رسالة الخطأ (في حال الرابط موجود مسبقًا):
ERROR The [public/storage] link already exists.
طيب لو تأكدت من هذي الخطوة، خلنا ننتقل للخطوة الثانية والأهم.
الخطوة الثانية: اضبط رابط التطبيق (APP_URL) في ملف .env
بدون مقدمات، افتح ملف .env الخاص بمشروعك، وابحث عن السطر اللي فيه القيمة APP_URL. بتلاقي شي شبيه بهذا:
...
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
...
هنا لازم تضيف رقم المنفذ (Port) في نهاية الرابط، يعني تضيف ":8000" بعد كلمة localhost — أو رقم المنفذ الثاني لو كنت غيرت الإعداد الافتراضي. وبالمناسبة، تقدر تعرف رقم المنفذ اللي يشتغل عليه تطبيقك من خلال الرسالة اللي تطلع لك لما تشغّل الأمر php artisan serve.
بعد التعديل، لازم يصير شكل السطر كذا:
...
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost:8000
...
طيب بعد كذا، وش الخطوة الأخيرة؟
احفظ ملف .env، ثم ارجع لصفحة تعديل البروفايل داخل تطبيقك، وحدّث الصفحة (Refresh). وبس كذا — بتقدر تشوف صورة البروفايل تظهر أمامك بشكل طبيعي.
الملخص
باختصار: مشكلة عدم ظهور صورة البروفايل في لارافيل 11 مع Jetstream غالبًا سببها واحد من اثنين: إما رابط التخزين (storage:link) غير موجود، أو رابط التطبيق (APP_URL) في ملف .env ناقصه رقم المنفذ الصحيح. جرب تشغيل أمر php artisan storage:link أول، وتأكد من إضافة رقم المنفذ لرابط APP_URL، وحدّث الصفحة — والمشكلة تنحل خلال دقيقتين بس.


