دوستان من به مشکلی برخوردم که نتونستم تا الان درست حلش کنم
من یه هاست nodejs از سایت parswebserver.com گرفتم که دسترسی به composer,npm,ssh هم به راحتی دارم
الان طبق آموزشی که دوستان در گفتگوهای قبلی و حتی خود تیم پشتیبانی هاست به من گفت، کل پروژه به جز فولدر public در یه پوشه قبل از public_html گذاشتم و محتوای داخل public پروژه رو ریختم داخل public_html و الان پروژه کاملا درست داره اجرا میشه
الان من مشکلم با آپلود فایل ها داخل storage هست و وقتی دستور sotorage:link میزنم برای تصاویر خطای 404 میده و میدونم علت اینه که پوشه storage رو داخل خود پوشه پروژه میسازه یعنی قبل از public_html
لطفا هر کسی به همچین مشکلی خورده و تونسته حلش کنه به بنده هم راهنمایی بدید
@milad.catalan1990
خطوط زیر رو به public_html/index.php اضافه کنید ببینید مشکل حل میشه:
$app->bind('path.public', function() {
return __DIR__;
});
سلام
برای آپلود تصاویر از چه کدی استفاده کردین ؟
مسیر آپلود تصاویر رو چطور به دست آوردین ؟
این کد آپلود هست و دقیق و درست هم آپلود میشه ولی تو مسیر روت سرور و پوشه لاراول. و بعد از اجرای دستور 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;
}
دوستان توی سایت jobteam که لینکشو هم میزارم یه آموزش آپلود لارول گذاشته که با یه تغییر کوچیک توی htaccess خیلی راحت میشه کل پروژه رو بزاریم تو public_html و این مشکلات رو نداشته باشیم
آپلود پروژه لاراول
لطفا اگه این روش مشکلی داره دوستان توضیح بدن
سلام و درود
@milad.catalan1990
روشی که در لینک ذکر کردید یه راهکار ساده هست
اما خب در نظر داشته باشید که به هر دلیلی اگر وب سرور دچار مشکلی بشه ، همه مواردتون اععم از دایرکتوری ها و ... خیلی چیزای دیگه ، خیلی شیک نمایش داده میشه و خیلی خطری هست!
استاندارد این هست که موارد اصلی در یه دایرکتوری دیگه باشند و موارد پابلیک در مسیر خودشون
اینطوری حتی وب سرور هم یه مشکلی براش پیش بیاد
دیگه اتفاق خاصی نمیوفته !
این نکته رو در نظر داشته باشید برای پروژه تون.
@Alimotreb
ممنون از راهنماییتون
الان تو همین روش ساده هم فقط موارد داخل پوشه public قابل دیدن هست و بقیه موارد قابل دیدن نیست و حتی اگه باشه بازم هم میشه با ایجاد سطح دسترسی رو پوشه ها جلوشو گرفت
ولی اینو درنظر بگیرید از خیلی جهات پروژه لاراول به خصوص برای اجرای دستورات دیگه نیازی به تغییر و دستکاری کدها نداری.
راسش من فقط برای پروژه لاراولی آموزش های اینطوری دیدم که محتوای پروژه رو یه پوشه قبل تر میزارن وگرنه تا الان که خودم native کار میکردم همیشه همه فایل ها داخل public_html بوده و تا الان مورد خاصی پیش نیومده
لطفا میشه دقیق تر توضیح بدید چه مشکلی امنیتی پیش میاد؟
@milad.catalan1990
میشه پروژه لاراول رو به شکلی که تمام دوستان بارها پیشنهاد دادن کانفیگ کرد ( یعنی یک پوشه عقب تر برای دایرکتوری لاراول ) و هیچ مشکلی هم پیش نمیاد.
البته اگر بخایم راه حلی برای مشکل شما پیدا کنیم :
روش استفاده از storage:link یک روش پیشنهادی لاراول هست. شما خودتون میتونید هنگام آپلود تصاویر اونها رو در پوشه ای که خودتون میل دارید بزارید و بعدا اونها رو از مسیر مورد نظر خودتون کال کنید.
حتی میتونید به راحتی اونها رو در مسیری مانند مسیر اصلی یک subdomain مانند dl.domain.com آپلود کنید و بعدا به راحتی اونها رو کال کنید.
دستور storage:link رو ترمینال هاست دوباره اجرا کنید
لینک تو پوشه public ساخته میشه اونو به پوشه public_html کپی کنید.
البته هاستتون باید از artisan پشتیبانی کنه
پارس وب سرور این امکان رو داره
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟