با سلام و وقت بخیر به همه دوستان.
در یک پروژه ای وبسایت یک کپی گرفته شده و توی ساب دامین نصب و راه اندازی شده. هیچ مشکلی وجود نداره بجز یک مورد، کار با 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); ```
نکته هم اینجاست که پروژه در حال دولوپ هست و بنده ننوشتم که بخوام تغییرات زیادی روش بدمتوی فایل index.php این بخش از کد رو قرار بدید:
$app->bind('path.public', function () {
return __DIR__;
});
بعد مجدد دستور ایجاد symlink رو با استفاده از کد زیر اجرا کنید:
Route::get('/symlink', function () {
\Artisan::call('storage:link');
dd(\Artisan::output());
});
سپس با فراخوانی آدرس /symlink اقدام به ایجاد symlink جدید کنید.
مشکل اینه که وقتی یه تصویر آپلود میکنم توی پوشه 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.شاید پاسخ شما همینجا باشد
همچنان متنی که در پیام بالا ارسال کردم بر میگردونه و Symlink.php جدید ایجاد نمیشه.
اینکه فایل index.php داخل پوشه public هست تاثیری توی فرایند نداره ؟
همچنان مشکل برطرف نشده، توی صفحه public_html هم symlink استوریج ایجاد نشده (داخل public هم نشده)
فایل رو هم پاک کردم و زدم
مشکل اینجا بود که دقیقا یک پوشه به اسم storage وجود داشت و با حذف اون همه چی درست شد، خیلی متشکرم