میلاد کاتالان
4 سال پیش توسط میلاد کاتالان مطرح شد
9 پاسخ

دستور storage:link روی هاست برای پروژه لاراول

دوستان من به مشکلی برخوردم که نتونستم تا الان درست حلش کنم
من یه هاست nodejs از سایت parswebserver.com گرفتم که دسترسی به composer,npm,ssh هم به راحتی دارم
الان طبق آموزشی که دوستان در گفتگوهای قبلی و حتی خود تیم پشتیبانی هاست به من گفت، کل پروژه به جز فولدر public در یه پوشه قبل از public_html گذاشتم و محتوای داخل public پروژه رو ریختم داخل public_html و الان پروژه کاملا درست داره اجرا میشه
الان من مشکلم با آپلود فایل ها داخل storage هست و وقتی دستور sotorage:link میزنم برای تصاویر خطای 404 میده و میدونم علت اینه که پوشه storage رو داخل خود پوشه پروژه میسازه یعنی قبل از public_html
لطفا هر کسی به همچین مشکلی خورده و تونسته حلش کنه به بنده هم راهنمایی بدید


ثبت پرسش جدید
woz
تخصص : fan of open source world
@wozniak 4 سال پیش مطرح شد
0

@milad.catalan1990
خطوط زیر رو به public_html/index.php اضافه کنید ببینید مشکل حل میشه:

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

میلاد کاتالان
تخصص : برنامه نویس و توسعه دهنده وب
@milad.catalan1990 4 سال پیش آپدیت شد
0

ممنون از پاسخ تون ولی مشکل حل نشد


علیرضا بهمئی
تخصص : برنامه نویس
@bahmei.alireza 4 سال پیش مطرح شد
0

سلام
برای آپلود تصاویر از چه کدی استفاده کردین ؟
مسیر آپلود تصاویر رو چطور به دست آوردین ؟


میلاد کاتالان
تخصص : برنامه نویس و توسعه دهنده وب
@milad.catalan1990 4 سال پیش مطرح شد
0

این کد آپلود هست و دقیق و درست هم آپلود میشه ولی تو مسیر روت سرور و پوشه لاراول. و بعد از اجرای دستور storage/link تو خود روت فولدر پروژه کار ساخت پوشه Storage رو انجام میده نه داخل public_html

if ($request->hasFile('image')) {
            //get filename with extension
            $filenamewithextension = $request->file('image')->getClientOriginalName();

            //get filename without extension
            $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);

            //get file extension
            $extension = $request->file('image')->getClientOriginalExtension();

            //filename to store
            $filenametostore = $filename.'-'.time().'.'.$extension;

            //Upload File
            $request->file('image')->storeAs('public/blogs', $filenametostore);

            $imageUrl= asset('storage/blogs/'.$filenametostore);

            $data['image']= $imageUrl;
        }

میلاد کاتالان
تخصص : برنامه نویس و توسعه دهنده وب
@milad.catalan1990 4 سال پیش مطرح شد
0

دوستان توی سایت jobteam که لینکشو هم میزارم یه آموزش آپلود لارول گذاشته که با یه تغییر کوچیک توی htaccess خیلی راحت میشه کل پروژه رو بزاریم تو public_html و این مشکلات رو نداشته باشیم
آپلود پروژه لاراول
لطفا اگه این روش مشکلی داره دوستان توضیح بدن


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 4 سال پیش مطرح شد
1

سلام و درود
@milad.catalan1990

روشی که در لینک ذکر کردید یه راهکار ساده هست
اما خب در نظر داشته باشید که به هر دلیلی اگر وب سرور دچار مشکلی بشه ، همه مواردتون اععم از دایرکتوری ها و ... خیلی چیزای دیگه ، خیلی شیک نمایش داده میشه و خیلی خطری هست!
استاندارد این هست که موارد اصلی در یه دایرکتوری دیگه باشند و موارد پابلیک در مسیر خودشون
اینطوری حتی وب سرور هم یه مشکلی براش پیش بیاد
دیگه اتفاق خاصی نمیوفته !
این نکته رو در نظر داشته باشید برای پروژه تون.


میلاد کاتالان
تخصص : برنامه نویس و توسعه دهنده وب
@milad.catalan1990 4 سال پیش مطرح شد
0

@Alimotreb
ممنون از راهنماییتون
الان تو همین روش ساده هم فقط موارد داخل پوشه public قابل دیدن هست و بقیه موارد قابل دیدن نیست و حتی اگه باشه بازم هم میشه با ایجاد سطح دسترسی رو پوشه ها جلوشو گرفت
ولی اینو درنظر بگیرید از خیلی جهات پروژه لاراول به خصوص برای اجرای دستورات دیگه نیازی به تغییر و دستکاری کدها نداری.
راسش من فقط برای پروژه لاراولی آموزش های اینطوری دیدم که محتوای پروژه رو یه پوشه قبل تر میزارن وگرنه تا الان که خودم native کار میکردم همیشه همه فایل ها داخل public_html بوده و تا الان مورد خاصی پیش نیومده
لطفا میشه دقیق تر توضیح بدید چه مشکلی امنیتی پیش میاد؟


woz
تخصص : fan of open source world
@wozniak 4 سال پیش مطرح شد
0

@milad.catalan1990
میشه پروژه لاراول رو به شکلی که تمام دوستان بارها پیشنهاد دادن کانفیگ کرد ( یعنی یک پوشه عقب تر برای دایرکتوری لاراول ) و هیچ مشکلی هم پیش نمیاد.
البته اگر بخایم راه حلی برای مشکل شما پیدا کنیم :
روش استفاده از storage:link یک روش پیشنهادی لاراول هست. شما خودتون میتونید هنگام آپلود تصاویر اونها رو در پوشه ای که خودتون میل دارید بزارید و بعدا اونها رو از مسیر مورد نظر خودتون کال کنید.
حتی میتونید به راحتی اونها رو در مسیری مانند مسیر اصلی یک subdomain مانند dl.domain.com آپلود کنید و بعدا به راحتی اونها رو کال کنید.


Mehdy Mehry
تخصص : Laravel , Livewire
@mehdymehry 3 سال پیش مطرح شد
0

دستور storage:link رو ترمینال هاست دوباره اجرا کنید
لینک تو پوشه public ساخته میشه اونو به پوشه public_html کپی کنید.
البته هاستتون باید از artisan پشتیبانی کنه
پارس وب سرور این امکان رو داره
ترمینال رو در cpanel پیدا کنید


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

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