Skip to content

Installing on shared hosting

The full install on hPanel or cPanel, start to finish. About an hour, most of which is waiting for files to upload.

Written for hPanel (Hostinger). cPanel works identically — where the screens are named differently, both are given.

Before you begin

Have these ready:

You needWhere it comes from
Your hosting accountSee Which hosting do I need?
Your domain, already pointed at that hostingYour domain registrar
The system files (a .zip)Your download
The database file (.sql)The same download

Check PHP first — it takes 30 seconds and saves an hour

In your hosting panel, find the PHP version setting and make sure it is 8.3 or 8.4. Not 8.2, and not 8.5 — 8.5 is not supported yet.

In hPanel this is under Advanced → PHP Configuration. In cPanel it is Select PHP Version or MultiPHP Manager.

Step 1: Upload the files

  1. Open your hosting File Manager
  2. Go into your web folder — public_html on both hPanel and cPanel
  3. Upload the .zip file we supplied
  4. Extract it there

You should now see folders including app, config, public, storage and a file called artisan, sitting directly inside public_html.

Upload the zip — never the loose files

Extracting on the server takes seconds. Uploading thousands of individual files takes hours and regularly fails halfway, leaving a broken install that is very hard to spot.

Make hidden files visible before you go further

Two essential files start with a dot: .htaccess and later .env. Most file managers hide these by default, so people believe they are missing and things break in confusing ways.

In hPanel's File Manager, turn on Show hidden files in the settings menu. In cPanel, use Settings in the top-right and tick Show Hidden Files (dotfiles).

Confirm you can see .htaccess in public_html before continuing.

Step 2: Create the database and import it

  1. In your panel, open the MySQL databases section hPanel: Databases → Management · cPanel: MySQL Database Wizard
  2. Create a new database, and a user, and give that user all privileges on it
  3. Write down the database name, username and password — you need all three shortly
  4. Open phpMyAdmin for that database
  5. Choose the Import tab, select the .sql file from your download, and run it

You should now see a long list of tables on the left-hand side. If the list is empty, the import did not work — see the troubleshooting table at the end.

If the .sql file is too large to upload

phpMyAdmin refuses uploads over a certain size. Compress the .sql file into a .zip first — phpMyAdmin accepts compressed imports directly and the file becomes far smaller.

Step 3: Create your .env file

  1. In File Manager, find .env.install.example in public_html
  2. Copy it, and rename the copy to exactly .env — with the dot, and no .txt on the end
  3. Open .env for editing

Now change these lines, and only these:

LineWhat to putExample
APP_URLYour address, with https://, no slash at the endhttps://erp.stmarys.edu.in
DB_DATABASEThe database name from step 2u123456_school
DB_USERNAMEThe database user from step 2u123456_admin
DB_PASSWORDThat user's password

Save the file.

Do not use .env.example

There are two example files. .env.example is the developer one — using it puts your live site into debug mode (showing your database password to anyone who triggers an error) and sends every email into a log file instead of to real people.

Always use .env.install.example.

Email settings are in the same file. You can fill them in now or later, but until you do, the system cannot send anything.

Step 4: Add the cron job

This step is not optional, and skipping it is the most common installation mistake. Without it the site works but nothing sends, with no error shown anywhere.

It has its own page: The cron job. Do it now, then come back.

Step 5: Open your site

Go to your domain in a browser. You should see the login screen.

Log in with the credentials supplied with your package.

Change the password immediately

The account you just used has full control of every school on this installation. Change its password before you do anything else.

Step 6: Let the system check itself

Go to Sidebar → Server & Health → Server Health.

This page inspects your hosting and reports what is wrong in plain language. Work through anything it flags. In particular:

CheckWhat to do
Media Storage LinkIf it says Not linked, press Create Storage Link Now
Compatibility MatrixEvery red row tells you exactly what to change in your hosting panel
Scheduled Tasks (Cron)Confirms the command you set up in step 4

Then replace your application key — see The application key. Do this before entering any payment or SMS details, and before printing any ID cards.

You are done

The system is installed. Next:

  1. Set up email — nothing sends until this is done
  2. Set up SMS and your payment gateway
  3. Create your first school

If something went wrong

What you seeWhyFix
Blank white page.htaccess did not upload — it is hidden by defaultTurn on hidden files and check it exists in public_html
The browser downloads a file instead of showing the siteSame causeAs above
"No application encryption key has been specified".env is missing, or APP_KEY in it is emptyCheck the file is named exactly .env
"Could not connect to database"Wrong details in .env, or the user has no privileges on the databaseRe-check all three values; confirm the user is assigned to the database with all privileges
Login page loads but the password is rejectedThe .sql file was never imported, or imported into a different databaseCheck phpMyAdmin shows tables in the database named in your .env
Site works, but no email, SMS or reminders ever arriveThe cron job is missingThe cron job
Logos and uploaded images are brokenStorage link missingCreate Storage Link Now on the Server Health page
An error page mentioning PHP version or a missing extensionPHP is set to the wrong versionSet PHP to 8.3 or 8.4 in your hosting panel