راکت

مشکل شورتکات و خواندن تصاویر از storage در public روی هاست اشتراکی

6 پاسخ

با سلام
من در پروژه‌ی لاراول در مسیر زیر پوشه‌ای به نام uploads دارم که تصاویرم در اونجا آپلود می‌شوند:

storage > app > public > uploads

روی لوکال برای اینکه بتونم در پروژه و پنل ادمینم تصاویر رو نمایش بدم از دستور زیر استفاده کردم:

php artisan storage:link

و یک شورتکات در مسیر زیر ایجاد و مشکل برطرف شد:

public > storage > uploads

اما روی هاست اشتراکی به دلیل محدودیت‌های زیاد، از راهکارهای مختلفی که در فروم راکت و وبسایت‌های دیگه بود استفاده کردم و جواب نگرفتم.

ممنون می‌شم دوستان راهکار مناسب و عملی رو ارائه بکنند تا بتونم مشکلم رو برطرف کنم و لطفاً موارد را کمی واضح بفرمایند، چون بنده در کار با لاراول تازه‌کار هستم.

پیشاپیش سپاسگزارم

احسان
احسان
@ehsan99
ثبت پرسش جدید

پاسخ‌ها

6
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

دستور storage:link در واقع از تابع symlink در PHP استفاده میکنه که خودت هم میتونی استفاده کنی

اگر روی لوکال از storage:link استفاده کردی، مراحل زیر رو طی کن

  • شرتکات storage که در public_html یا پوشه public ساخته شده رو پاک کن
  • یه فایل PHP توی public_html بساز.. مثلا mylink.php
  • کدهای زیر رو به mylink.php اضافه کن
$targetFolder = $_SERVER['DOCUMENT_ROOT'].'/storage/app/public';
$linkFolder = $_SERVER['DOCUMENT_ROOT'].'/public/storage';
symlink($targetFolder,$linkFolder);
echo 'Symlink completed';
احسان
احسان
@ehsan99

تخصص: توسعه دهنده وب

@ali.bayat
ممنون از راهنماییتون. چقدر ساده و خوب توضیح دادید. من انجام دادم. ولی نتیجه همانطور که در پیام مشخص است، محدودیت از طرف سرویس دهنده را نمایش می‌دهد.

Warning: symlink() has been disabled for security reasons in /home/***/public_html/mylink.php on line 4
Symlink completed

آیا راهکار دیگری وجود دارد که بتوان جایگزین کرد؟
آیا طبق تجربه‌ی شما، سرویس‌دهنده معمولاً قبول می‌کند که این قابلیت را برای یک هاست اشتراکی فعال کند؟

با سپاس

شاید پاسخ شما همین‌جا باشد

فرهاد علاقه بند
فرهاد علاقه بند
@farhadswh

تخصص: توسعه دهنده وبسایت

سلام برای اینکار باید فایل تنظیمات config\filesystems.php را باز کنید و قسمت public رو بصورت زیر تغییر بدین

        'public' => [
            'driver' => 'local',
            'root' => public_path('uploads'),
            'url' => env('APP_URL').'/uploads',
            'visibility' => 'public',
        ],
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

شاید این قابلیت رو فعال نکند. اما میتونی تیکت بزنی و بگی که خودشون این کار رو برات انجام بدند. البته اگر قبول کنند

احسان
احسان
@ehsan99

تخصص: توسعه دهنده وب

@farhadswh
ممنون از پاسخ و زمانی که گذاشتید. متأسفانه با این مورد هم حل نشد.

amir dabaghi
amir dabaghi
@amir463

تخصص: Full-Stack Web Developer Freelancer

با سلام
متاسفانه مشکل بنده هم همین است . هر راهی تو نت یافتم امتحان کردم به پاسخی نرسیدم .
هزینه های سرور مجازی که برای لاراولی ها خوبه خیلی زیاده سرورهای اشتراکی هم خیلی محدودیت دارن.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام