نوب
5 سال پیش توسط نوب مطرح شد
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 5 سال پیش مطرح شد
0

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

همونطور که میدونین باید کل لاراول به جز پوشه 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');
});

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


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 5 سال پیش مطرح شد
0

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


نوب
تخصص : کدنویس نوب :)
@yk5742g 5 سال پیش مطرح شد
0

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


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 5 سال پیش مطرح شد
نوب
تخصص : کدنویس نوب :)
@yk5742g 5 سال پیش مطرح شد
0

@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 5 سال پیش مطرح شد
0

برای این که خطای 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 5 سال پیش مطرح شد
0

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

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

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

نوب
تخصص : کدنویس نوب :)
@yk5742g 5 سال پیش مطرح شد
0

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

همونطور که میدونین باید کل لاراول به جز پوشه 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');
});

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


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

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