راکت
حل شده

مشکل آپلود تصاویر در جای اشتباه پس از انتقال پروژه به هاست

7 پاسخ

سلام
پروژه من توی لوکال درست آپلود میکنه
ولی الان که به هاست انتقال دادم مسیر آپلود درسته و توی هاست درست ثبت میشه ولی تصویرم میره توی پوشه image که قبل از PUBLIC_HTML هست اونجا ریخته میشه و توی سایت نمایش نمیده.

کد آپلود تصویرمم به کد زیر تغییر دادم و setting url یه متغیر سراسری هست که آدرس سایت را میده ولی بازم میره قبل از روت آپلود میشه

                $fileCard = $request->file('pic_cart');
                $typeImage = $fileCard->getClientOriginalExtension();
                $nameFileCard = $fileCard->getClientOriginalName();
                $newName = time() . "_" . md5($nameFileCard) . "." . $typeImage;
                $path = setting('url').'/images';
                $fileCard->move($path, $newName);
                $cart_insert = '/images/' . $newName;
نوب
نوب
@yk5742g
ثبت پرسش جدید

پاسخ‌ها

7
نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

بهترین پاسخ

خب خودم مشکلو پیدا کردم
اینجا مینویسم که بقیه هم که مشکل منو دارن استفاده کنن

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

require __DIR__.'/../yasin/vendor/autoload.php';
$app = require_once __DIR__.'/../yasin/bootstrap/app.php';

کلمه yasin اسم پوشه ای که پروژه داخلش ریخته شده

حالا فایل serve.php هم اینجوری تغییر بدین

if ($uri !== '/' && file_exists(__DIR__.'/../public_html'.$uri)) {
    return false;
}
require_once __DIR__.'/../public_html/index.php';

و در نهایت هم فایل AppServiceProvider.php در مسیر app/Providers را به اینصورت تغییر بدین

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

تامام . عکسای آپلودیتون خوشگل میرن توی روت هاست 😅

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@yk5742g
سلام.
به جای اون setting('url') از public_path استفاده کنید.

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

@mohsenbostan سلام
از اونم که گفتین قبلش استفاده کرده بودم بازم همون مشکل را داشت :(

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

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

@juza66 @mohsenbostan @hesammousavi سلام
آقا من این کد هم قرار دادم ولی الان یه پوشه به اسم public_html توی قسمت فایل های پروژه ساخت و توی اون ریخت تصویرو 😂😂😂
https://roocket.ir/discuss/2302

من اینجوری پروژه را ریختم رو هاست ببینین درسته ؟

تمام فایلهای Laravel را توی یه پوشه به اسم yasin ریختم که قبل از PUBLIC_HTML هاست هست و محتویات توی پوشه public هم ریختم توی روت سرور که PUBLIC_HTML هست و فایلindex.php توی روت را ادیت کردم و در 2 مسیر زیر را به این شکلی که هست تغیر دادم

require __DIR__.'/../yasin/vendor/autoload.php';
$app = require_once __DIR__.'/../yasin/bootstrap/app.php';

بعدش تویappserviceProvider هم اینطوری انجام دادم

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

اینم کد آپلود تصویرمه

if ($request['pic_cart'] != null) {
                $fileCard = $request->file('pic_cart');
                $typeImage = $fileCard->getClientOriginalExtension();
                $nameFileCard = $fileCard->getClientOriginalName();
                $newName = time() . "_" . md5($nameFileCard) . "." . $typeImage;
                $path = public_path('/images');
                $fileCard->move($path, $newName);
                $cart_insert = '/images/' . $newName;
            } else {
                $cart_insert = $request['old_cart'];
            }

مسیر تصویر در دیتابیس درست وارد میشه به اینصورت

/images/45154848484-544848411556.jpg

ولی مشکل اینه که عکس آپلودی میره توی پوشه خود لاراول در پوشه image ریخته میشه و توی روت نمیاد
اینم کد htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

یه مشکل دیگه هم دارم
هرجا که درکمه ثبت فرم هست که با post و یا get فرستاده میشه وقتی میزنم خطای 404 میده
در صورتی که روی لوکال همه چیز درسته

رضا جلیلیان
رضا جلیلیان
@rezajalilian

تخصص: لطفا تخصص خود را وارد کنید

برای این که خطای 404 نگیری فایل htaccess رو به این صورت بزار باشه

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

<IfModule mime_module>
  AddHandler application/x-httpd-ea-php72 .php .php7 .phtml
</IfModule>

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php72” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php72 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit
رضا جلیلیان
رضا جلیلیان
@rezajalilian

تخصص: لطفا تخصص خود را وارد کنید

اون قسمتی که توی فایل ایندکس تغییر دادی رو به حالت اول برگردون

بعدش تویappserviceProvider هم این بزار باشه و باز امتحان کن

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

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

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