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