RezaMnk
2 سال پیش توسط RezaMnk مطرح شد
8 پاسخ

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

با سلام و وقت بخیر به همه دوستان.
در یک پروژه ای وبسایت یک کپی گرفته شده و توی ساب دامین نصب و راه اندازی شده. هیچ مشکلی وجود نداره بجز یک مورد، کار با 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); ```

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

ثبت پرسش جدید
#MrJey
تخصص : هیچی
@LordDeveloper 2 سال پیش آپدیت شد
1

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

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

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

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

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


#MrJey
تخصص : هیچی
@LordDeveloper 2 سال پیش مطرح شد
0

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

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


RezaMnk
تخصص : طراح سایت و برنامه نویس لاراول
@RezaMnk 2 سال پیش آپدیت شد
0

مشکل اینه که وقتی یه تصویر آپلود میکنم توی پوشه 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.

#MrJey
تخصص : هیچی
@LordDeveloper 2 سال پیش آپدیت شد
1

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

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

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

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

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


RezaMnk
تخصص : طراح سایت و برنامه نویس لاراول
@RezaMnk 2 سال پیش مطرح شد
0

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


#MrJey
تخصص : هیچی
@LordDeveloper 2 سال پیش مطرح شد
0

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

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


#MrJey
تخصص : هیچی
@LordDeveloper 2 سال پیش مطرح شد
0

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


RezaMnk
تخصص : طراح سایت و برنامه نویس لاراول
@RezaMnk 2 سال پیش مطرح شد
0

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


RezaMnk
تخصص : طراح سایت و برنامه نویس لاراول
@RezaMnk 2 سال پیش مطرح شد
0

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


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

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