شما در هاست اشتراکی دسترسی SSH نخواهید داشت اما این به این معنی نیست که نمیتونید پروژه رو روی هاست اشتراکی ران کنید .
ببینید به روت اصلی پروژه برید و کل محتوا رو بریزید تو یک پوشه مثلا laravel
و بعد هرچی توی public هستو بیارید بیرون و در کنار همین پوشه بریزید
و فایل index.php رو ویرایش کنید:
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
همینطور که میبینم این دو خط داره تو آدرس دادن فایل ها اشاره میکنه که خب ما دیگه اون آدرس نیستیم تو این آدرسیم:
require __DIR__.'/laravel/vendor/autoload.php';
$app = require_once __DIR__.'/laravel/bootstrap/app.php';
میشه گفت کار تمومه حالا همین و میبریم میریزیم توی public_html هاست خودمون
میمونه دیتا بیس که اونجا هم دیگه خبری از migration نیست پس به صورت دستی از phpmyadmin لوکال export میکنیم و در phpmyadmin هاست import
@mehdi.shahabbasian
سلام
اجازه بدید راجع به نقطه ضعف اصلی این روشی ک گفتید یکم بحث کنیم
روش خیلی خیلی بهتری هست ک من از اون استفاده میکنم اگر مایل بودید بهتون توضیح میدم
روشی ک شما گفتید خیلی از جاها توصیه کردن اما یه ضعف فوق العاده بزرگ داره
وقتی شما محتوای پوشه public رو خارج میکنید یعنی در واقع دارید مسیری رو فراهم میکنید که هر ریکوئست از داخل پوشه publuc_html شروع به کار بکنه
پس اینجوری هر ریکوئست دسترسی داره به محتوای کل پروژه
داخل محتوای کل پروژه پوشه ای هست با عنوان storage/framework/sessions
که اونجا اطلاعات سشن پروژه نگه داری میشه به هیچ وجه نباید قابل دسترسی از طرف کلاینت باشه
@kian.sdi.0028
خب میتونیم به جای اینکه پوشه laravel رو داخل public_html بزاریم اونو بیرون این پوشه و هم ردیف public_html قرار بدیم و اینجا فایل index.php آدرس دهی میشه:
require __DIR__.'/../laravel/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';
اینجوری دیگه هیچ فایلی جز فایل های public ما در دسترس رکوئست های web نیست
@mehdi.shahabbasian
این دومی بهتره درسته
من خودم با یه فایل .htaccess همه ریکوئست هارو منتقل میکنم به پوشه public ولی اینم ک شما میگی تقریبا همونه
@kian.sdi.0028
بله درسته من هم با فایل htaccess معمولا کارهامو انجام میدم
اما این فایل htaccess معمولا برای خیلی از افراد قابل درک نیست و ازش اطلاعی ندارند و دوم کلا اگر تمام فایل ها خارج از پوشه public_html باشن عملا به هیچ طریقی از بیرون قابل دسترس نیستند.
با تشکر از @mehdi.shahabbasian , @kian.sdi.0028 بابت راهنمایی های خوبشون
اگر امکانش وجود دارد آقای @kian.sdi.0028 روشی که شما هم استفاده میکنید رو توضیح مختصری بدهید.
@saeed.amiri7676
سلام خواهش میکنم
روش سختی نیستش.
کل پروژه خودتون رو به پوشه public_html هاست آپلود میکنید.
یعنی در واقع وارد پوشه public_html که بشید باید فایل های public , app , resources و... وجود داشته باشه یعنی روت اصلی پروژه اتون میشه public_html.
بعد از اینکه اینکار رو انجام دادید داخل همین پوشه یه فایل جدیدی به اسم .htaccess ایجاد میکنید.
داخل این فایل htaccess این دستورات رو کپی و پیست کنید.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
سلام مجدد
یک سوال دیگه برام پیش امد در همین مورد ، ممنو میشم راهنمایی بفرمایید
@mehdi.shahabbasian @kian.sdi.0028
با تغییراتی که شما اشاره کردید هم در فایل .htaccess و یا با تغییر index.php در صورتی که در همین هاست یک سایت هم بارگزاری شده باشه آیا مشکلی برایش پیش می آیید یا خیر؟؟؟
@saeed.amiri7676
با تغییر دادن فایل htaccess بله امکانش زیاده که در بالا اوردن بقیه آدرس ها توی هاست مشکل ایجاد بشه
مخصوصا این دستور که عملا داره میگه همه درخواستها به پوشه public ارجا بشه:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
و در صورت استفاده از htaccess باید ادرس دهی بقیه پوشه های مورد نیاز رو هم انجام بدید .
اما در رابطه با تغییر فایل ایندکس خیر
به نظرم بهترین راه همینه که تمام فایل هارو خارج از پوشه public_html قرار بدید و محتوای public رو بریزید توی public_html و در index ادرس دهی هارو تغییر بدید
@mehdi.shahabbasian
چطوری میتونم داخل ایندکس هم به سایت لینک رو بدم هم به پروژه ی لاراولیم؟؟؟
@saeed.amiri7676
منظورتون رو متوجه نمیشم!
شما در index.php فقط آدرس وندور و کانفیگ های مورد نیاز لاراولی رو میدید تا با ورود به روت اصلی سایت شما اون پروژه بالا بیاد
حالا ممکنه در همون هاست چندید سایت دیگه در پوشه های مختلف بالا آورده باشید یا سابدومین در مثلا پنل دایرکت ادمین که پوشش در همون public_html هست
اینجا برای اونها لازم نیست کار خاصی بکنید
اون پوشه ها زمان صدا زده شدن در url کار خودشونو میکنند
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟