راکت
حل شده

عدم آپلود فایل در پوشه public html لاراول

5 پاسخ

درود.
فایل پروژه رو در یک دایرکتوری بالاتر از دایرکتوری public html با نام laravel آپلود کردم و محتوای فولدر Public رو هم به public html منتقل کردم.

تا اینجای کار همه چی اوکی هست.
ولی وقتی میخام فایلی رو مثلا تصویری رو از داخل پنل مدیریت پروژه آپلود کنم می‌ره داخل دایرکتوری پروژه و فولدر public میسازه و فایل رو آپلود می کنه.

اکثر روش های bind کردن چه داخل index.php و چه در AppProviderService.php انجام دادم ولی بازم هیچ.

لطفا راهنمایی کنید 🙏

ثبت پرسش جدید

پاسخ‌ها

5
سیامک
سیامک
@Siyamak8080

تخصص: توسعه دهنده وب اپلیکیشن

بهترین پاسخ

ضمن تشکر و سپاس از دو عزیز @salar.mohammad2013 و @developer

بعد از کلی سرچ کردن نهایتا ، پاسخ این چالش رو پیدا کردم:

افزودن تکه کد زیر به فایل public_html > index.php

app()->usePublicPath(__DIR__);

برای مطالعه بیشتر اینجا کلیک کنید.

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

سلام عزیز
من خیلی وقته از هاست اشتراکی استفاده نمیکنم اما چند مورد رو ذکر میکنم لطفا بررسی کن
یک فایل htaccess هست

RewriteEngine on
RewriteCond %{HTTP_HOST} ^ur-domain.ir$ [NC,OR]
RewriteCond %{HTTP_HOST} ^ur-domain.ir$
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]

مورد دیگه توی config>filesystems بخش disks ها

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

و در نهایت متد ذخیره سازیت رو ببین چیه که استفاده میکنی من توی لایو وایر از storeAs استفاده میکنم

developer
developer
@developer

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

فایل ها رو توی public ذخیره نکنید،
ترجیحا توی استوریج و یا چه بهتر توی یه فضای بیرونی s3 ذخیره کنید

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

سیامک
سیامک
@Siyamak8080

تخصص: توسعه دهنده وب اپلیکیشن

درود.
سپاس از وقتی که گذاشتید.

متاسفانه روش ها رو امتحان کردم ولی کارساز نبود.
از متد storeAs و Storage (به همراه symlink) هم استفاده کردم ولی بازم میگرده داخل دایرکتوری پروژه و اونجا داخل public آپلود می کنه.
در ضمن از bind app های زیر هم استفاده کردم.

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

یا

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

انگار اصن اینارو نمی خونه !!!
ضمنا ساختار htaccess رو نگاه کردم چیزی تحت عنوان public نداشت که بخوام تغییر بدم . متاسفانه

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

ضمنا ساختار htaccess رو نگاه کردم چیزی تحت عنوان public نداشت که بخوام تغییر بدم . متاسفانه

به نظر من مشکل شما از همین فایل htaccess هست
شما باید عمل ریدایرکت به همون public رو براش انجام بدی
دیگ نیاز به اون بایند کردنو این داستانا هم نباید باشه

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

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