When you purchase or create a Cpanel account and point a domain DNS to cpanel server, its often uses the "
public_html" directory for all its websites files and data which is known as default Document Root, However when we deploy a Laravel Project to Cpanel Server, the sub directory "
public_html/public" folder is occupied with website data and files that are available to general public, therefore we must change our domain default document root from
public_html/public in order to ensure the Laravel project is successfully deployed.
The primary domain can also be setup to use a sub-directory inside
public_html directory instead of
public_html itself. Follow the below steps to change the default document root of your primary domain in cPanel account. Please note that, You must have root shell access for changing the main/primary domain document root in cPanel, Use following steps to change document root of your primary domain in cPanel account for Laravel Project.
you must have root SSH access to perform these steps
Step 1 - Login to Cpanel Server where your Laravel Project is deployed
Connect to your server via SSH as root user.
Step 2 - Update the Document Root
Using your favorite text editor (ex: nano) edit the following file.
Replace USERNAME with your cPanel account username and Replace DOMAINNAME.COM with your Primary domain name.
once you edited the file, find the following two lines in this file.
documentroot: /home/USERNAME/public_html path: /home/USERNAME/public_html/cgi-bin
replace it with you Laravel Project Public Folder as below.
documentroot: /home/USERNAME/public_html/public path: /home/USERNAME/public_html/public/cgi-bin
and then press
CTRL+O to save the file, and then delete the cache file for your primary domain.
Step 3 - Update the Document Root for SSL
If the primary domain has an SSL certificate installed prior to change the document root as in step 2 above, you must edit the following file and do the changes as same as mentioned by the step 2
Save the file after changes are made and then delete the cache file for your primary SSL domain.
Step 4 - Rebuild the Apache Configuration File
Run the following scripts to update the user data cache and rebuild apache configuration file.
Step 5 - Restart the Apache server to reflect the changes
service httpd restart
If you have any other questions, experience or insights on "Changing Laravel Project Document Root from
public_html/public folder" please feel free to leave your thoughts in the comments bellow which might be helpful to someone some day!.