راکت
حل شده

عدم همگام بودن storage در لاراول

8 پاسخ

با سلام و وقت بخیر به همه دوستان.
در یک پروژه ای وبسایت یک کپی گرفته شده و توی ساب دامین نصب و راه اندازی شده. هیچ مشکلی وجود نداره بجز یک مورد، کار با storage
توی این پروژه فایل های تصاویر و ... از پوشه /SUBDOMAIN/public/storage خونده و route میشه درصورتی که فایل ها داخل پوشه SUBDOMAIN/storage/app/public ذخیره میشن.

فایل کانفیگ filesystems:


            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ]```

فایل syslink داخل پوشه ```SUBDOMAIN/public``` که پوشه اصلی index.php هست:
```$target = '/SUBDOMAIN/storage/app/public'; 
$shortcut = 'storage'; 
symlink($target, $shortcut); ```

نکته هم اینجاست که پروژه در حال دولوپ هست و بنده ننوشتم که بخوام تغییرات زیادی روش بدم
RezaMnk
RezaMnk
@RezaMnk
ثبت پرسش جدید

پاسخ‌ها

8
#MrJey
#MrJey
@LordDeveloper

تخصص: هیچی

بهترین پاسخ

توی فایل index.php این بخش از کد رو قرار بدید:
‍‍‍

$app->bind('path.public', function () {
    return __DIR__;
});

بعد مجدد دستور ایجاد symlink رو با استفاده از کد زیر اجرا کنید:
‍‍‍

Route::get('/symlink', function () {
    \Artisan::call('storage:link');
    dd(\Artisan::output());
});

سپس با فراخوانی آدرس /symlink اقدام به ایجاد symlink جدید کنید.

#MrJey
#MrJey
@LordDeveloper

تخصص: هیچی

سلام وقت بخیر.

مشکلتون چیه؟ چه خطایی برمی‌گردونه کدتون؟ پیشنهاد می‌کنم از فساد Artisan برای ایجاد symlink استفاده کنید.
البته روی هاست یه سری مراحل رو باید پیش برین. از جمله بایند کردن path.public برای مشخص کردن پوشه‌ی public.

RezaMnk
RezaMnk
@RezaMnk

تخصص: طراح سایت و برنامه نویس لاراول

مشکل اینه که وقتی یه تصویر آپلود میکنم توی پوشه storage که داخل دایرکتوری اصلی publichtml (در واقع ساب دامین) اپلود میشه (که باید همینجا باشه) ولی وقتی میخوام لینک عکس رو بزارم ، آدرس DOMAIN/storage/image.jpg خطای 404 میده چون داره دنبال عکس داخل دایرکتوری storage که داخل پوشه publichtml/public هست میگرده
از artisan storage:link هم استفاده کردم کد زیر رو بر میگردونه:

The [SUBDOMAIN/public/storage] link already exists.
The links have been created.

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

RezaMnk
RezaMnk
@RezaMnk

تخصص: طراح سایت و برنامه نویس لاراول

همچنان متنی که در پیام بالا ارسال کردم بر میگردونه و Symlink.php جدید ایجاد نمیشه.
اینکه فایل index.php داخل پوشه public هست تاثیری توی فرایند نداره ؟

#MrJey
#MrJey
@LordDeveloper

تخصص: هیچی

فایلی با نام symlink.php نباید ایجاد بشه.

از پوشه storage/app/public یه symlink با اسم storage در داخل public_html ایجاد می‌شه.

#MrJey
#MrJey
@LordDeveloper

تخصص: هیچی

البته اینم بگم. symlink قبلی رو باید پاک کنید و مجدد symlink ایجاد کنید

RezaMnk
RezaMnk
@RezaMnk

تخصص: طراح سایت و برنامه نویس لاراول

همچنان مشکل برطرف نشده، توی صفحه public_html هم symlink استوریج ایجاد نشده (داخل public هم نشده)
فایل رو هم پاک کردم و زدم

RezaMnk
RezaMnk
@RezaMnk

تخصص: طراح سایت و برنامه نویس لاراول

مشکل اینجا بود که دقیقا یک پوشه به اسم storage وجود داشت و با حذف اون همه چی درست شد، خیلی متشکرم

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

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