Appearance
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 need | Where it comes from |
|---|---|
| Your hosting account | See Which hosting do I need? |
| Your domain, already pointed at that hosting | Your 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
- Open your hosting File Manager
- Go into your web folder —
public_htmlon both hPanel and cPanel - Upload the
.zipfile we supplied - 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
- In your panel, open the MySQL databases section hPanel: Databases → Management · cPanel: MySQL Database Wizard
- Create a new database, and a user, and give that user all privileges on it
- Write down the database name, username and password — you need all three shortly
- Open phpMyAdmin for that database
- Choose the Import tab, select the
.sqlfile 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
- In File Manager, find
.env.install.exampleinpublic_html - Copy it, and rename the copy to exactly
.env— with the dot, and no.txton the end - Open
.envfor editing
Now change these lines, and only these:
| Line | What to put | Example |
|---|---|---|
APP_URL | Your address, with https://, no slash at the end | https://erp.stmarys.edu.in |
DB_DATABASE | The database name from step 2 | u123456_school |
DB_USERNAME | The database user from step 2 | u123456_admin |
DB_PASSWORD | That 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:
| Check | What to do |
|---|---|
| Media Storage Link | If it says Not linked, press Create Storage Link Now |
| Compatibility Matrix | Every 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:
- Set up email — nothing sends until this is done
- Set up SMS and your payment gateway
- Create your first school
If something went wrong
| What you see | Why | Fix |
|---|---|---|
| Blank white page | .htaccess did not upload — it is hidden by default | Turn on hidden files and check it exists in public_html |
| The browser downloads a file instead of showing the site | Same cause | As above |
| "No application encryption key has been specified" | .env is missing, or APP_KEY in it is empty | Check the file is named exactly .env |
| "Could not connect to database" | Wrong details in .env, or the user has no privileges on the database | Re-check all three values; confirm the user is assigned to the database with all privileges |
| Login page loads but the password is rejected | The .sql file was never imported, or imported into a different database | Check phpMyAdmin shows tables in the database named in your .env |
| Site works, but no email, SMS or reminders ever arrive | The cron job is missing | The cron job |
| Logos and uploaded images are broken | Storage link missing | Create Storage Link Now on the Server Health page |
| An error page mentioning PHP version or a missing extension | PHP is set to the wrong version | Set PHP to 8.3 or 8.4 in your hosting panel |