Putting laravel application in public_html directory is very dangerous.
User should land on public directory.
If you can edit the document root, update it from /home/user/public_html
to /home/user/public_html/public
But some shared hosting provider forbids updating document root of main domain.
Some people stores application to other directory and copies the index.php file from public directory and update path.
It works fine, but if you are serving asset like css
and js
files from server and try to deploy updates by git, your server will server old contents unless you copy latest assets to public_html directory.
There is another trick, to do it and your assets will remain update to original asset and no need to copy index.php file.
Let's assume that you have laravel application in /home/user/laravel
directory.
SSH to your server and cd to home by cd ~
.
Back up public_html directory if you have any important file in it.
Delete public_html
directory by running rm -rf public_html
.
Now create a symbolic link with name public_html
point to your laravel applications public directory by running
ln -s /home/user/laravel/public/ public_html
Now the public_html is just a symbolic link of your applications public directory.
If anything change in your applications public directory, it will immediately available for user.
Have Fun 🎉 !!!
Top comments (13)
After linking the public to public_html I get a 403 Forbidden error.
I am using laravel 9
Everything else works fine but cant access the website.
I think directory permission is not correct.
Check directory permission.
Which directory do I need to check for permission.
I have tried 775, 777, for public html, and all the symlinks.
I am not sure which one to set to which one.
If you can help me with that I would be thankful.
Thanks in advance
Check for permission as well as owner. Of current user is not an owner, it can cause forbidden issue.
Current user is the owner. I have full access to the cpanel hosting.
You can check server log for the exact error log
after I do that my website including
/index.php
to all pages. Examplewww.domain.com/index.php/about
,www.domain.com/index.php/contact
. How do I fix that?May be you are using url helper. Can't exactly say as I don't know that much detail about the context of your issue.
Very helpful! Thank you.
Here is another resource full article about Laravel project deployment in Shared Hosting
nihardaily.com/21-deploy-guideline...
You can deploy Laravel app by uploading whole code as defined in mentioned article. But for security reasons, we shouldn't expose laravel's root directory, we should only expose and serve from public directory.
Very Nice Its Working. Sir.
Thanks