Ownware
Guide · Aug 8, 2026

Installing a PHP App on cPanel Shared Hosting — The Whole Click Path, and the Three Places It Goes Wrong

If you have never installed self-hosted software, this is the objection standing between you and owning your tools. Here is the actual sequence on ordinary shared hosting, and how to tell which of the three common failures you have hit.

The honest barrier to owning your software is not the price and it is not the maintenance. It is a quiet worry that installation is a thing other people know how to do.

This guide is the click path. It assumes you have never done it, that you are on ordinary shared hosting with cPanel, and that you would like the whole thing to be over in about fifteen minutes.

What you need before you start

  • Hosting with cPanel (or Plesk — the steps map closely)
  • PHP 8.0 or newer with the PDO extension. Most self-hosted PHP business apps need only this; some also want curl and fileinfo, which are standard.
  • A database — MySQL or MariaDB for real use. Several apps also run on SQLite, which needs no database setup at all and is the fastest way to try one before committing.
  • The app's ZIP file — the steps below fit any small PHP app built this way; Slotly, our booking app, is a worked example that installs exactly like this
  • Fifteen minutes

You do not need: a VPS, Docker, a terminal, Composer, Node, or any build step. If a product requires those, it is a different class of software and this guide will not match it.

The click path

1 — Check your PHP version (90 seconds, and skipping it causes failure #1)

In cPanel, find MultiPHP Manager (sometimes "Select PHP Version"). It lists your domains and the PHP version each one runs.

If it says 7.x, change it to 8.1 or newer now. Many hosts still default older accounts to 7.4, and this single setting causes more failed installs than everything else combined.

While you are there, open PHP Extensions and confirm pdo and pdo_mysql are ticked. They almost always are — check anyway, because it is thirty seconds now versus a confusing error later.

2 — Create the database (3 minutes, and step 2c is failure #2)

Open MySQL® Databases.

a. Under Create New Database, type a name — rota, say — and click Create Database. cPanel will prefix it with your account name, giving something like myaccount_rota. Write the full name down.

b. Scroll to MySQL Users → Add New User. Create a user, use the password generator, and paste the password somewhere before you click Create — it is not shown again.

c. *Scroll further to Add User To Database. Select your user, select your database, click Add, then tick ALL PRIVILEGES and click Make Changes.*

This is the step everybody misses. A database and a user can both exist perfectly and simply not know about each other. If you skip it, the installer will report that it cannot connect using credentials that are entirely correct — which is the single most confusing failure in this whole process.

3 — Upload the files (4 minutes)

Open File Manager and navigate to where the app should live:

  • Whole domain: public_html
  • Subdomain (rota.yourbusiness.com): create the subdomain first under Domains, then use the folder it makes
  • Subfolder (yourbusiness.com/rota): create a rota folder inside public_html

A subdomain is the tidiest option and takes one extra minute.

Click Upload, choose the ZIP, wait for it to finish, then right-click the ZIP → Extract. Delete the ZIP afterwards.

Check where the files landed. Extracting sometimes creates a nested folder — if you now have public_html/rota/rota/index.php, move the inner contents up one level. A nested folder is the most common cause of a blank page or a 404 at this stage.

4 — Run the installer (2 minutes)

Visit the URL in a browser. A web installer should appear and ask for:

  • Database host — almost always localhost
  • Database name — the full prefixed name from step 2a
  • Database user — the full prefixed username
  • Password — the one you pasted somewhere

Then an admin account for yourself. This is the two minutes the product pages mean when they say "a 2-minute web installer" — the preceding steps are cPanel's, not the app's.

5 — Set the cron, if the app uses one (2 minutes)

Anything that sends reminders, alerts or scheduled emails needs a cron job. In cPanel, open Cron Jobs, choose Once Per Day (or as the app's documentation specifies), and paste the command the app gives you.

A missing cron is a silent failure. The app works perfectly and simply never emails anybody — which you discover the week a deadline passes. Set it during installation, then verify it fired the next day.

The three failures, and how to tell them apart

Symptom: a blank white page.
Almost always PHP version. Go back to step 1. If PHP is already 8+, look in cPanel's Errors section — a fatal error will name a missing extension.

Symptom: "could not connect to the database" with credentials you know are right.
You skipped step 2c. The user is not attached to the database. Go back and add it with ALL PRIVILEGES.

Symptom: the homepage loads but every other page 404s.
.htaccess rewriting is not active. On Apache and LiteSpeed shared hosting it usually is, but confirm the .htaccess file actually extracted — File Manager hides dotfiles by default. In Settings, tick Show Hidden Files and look again. A small number of hosts restrict .htaccess overrides entirely — if the file is present and pages still 404, your host's own documentation or support desk will confirm whether overrides are allowed on your plan.

That is genuinely the list. In our experience these three account for the overwhelming majority of failed installs on shared hosting.

After it works: four things worth ten minutes

  1. Force HTTPS. cPanel's SSL/TLS Status issues a free certificate; then enable Force HTTPS Redirect under Domains. Do this before entering real data.
  2. Set up a backup. cPanel's Backup Wizard does full account backups; the database is the part that matters. Then restore it once, into a test database, so you know the backup is real. An untested backup is a hope.
  3. Note the PHP version somewhere. When your host upgrades their default in two years, you will want to know what you were on.
  4. Write down where it is installed and which database it uses. Your successor — or you in three years — will need this and will not remember.

If it goes wrong and you are stuck

Your host's support can solve almost all of this in one ticket, and they are used to the question. "I'm installing a PHP application; can you confirm PHP 8+ is active on this domain, PDO is enabled, and .htaccess overrides are permitted?" Support desks answer that in minutes.

You are not asking them to support the application — only to confirm the environment. That distinction usually gets a fast answer instead of a "we don't support third-party software" reply.

The honest bit

This is genuinely easy, and it is genuinely not nothing. Fifteen minutes if it goes well, an hour and a support ticket if it does not.

And it is not the last time you will do it. PHP versions move, hosts change defaults, and you will apply an update at some point. If none of the above sounds like something you want to own, that is a completely legitimate conclusion — and a hosted subscription is what you are buying instead. Nobody should feel talked into this.

But if it sounds fine, the barrier was never technical. It was just unfamiliar.


Next steps

Written for ordinary cPanel shared hosting. Plesk, DirectAdmin and managed VPS panels differ in menu names but not in sequence: PHP version, database, files, installer, cron.

Series · Run it well — part 1 of 8
Securing a Self-Hosted Business App — The Short List, and What You Can Safely Ignore →
Own your tools

Stop renting your own business.

Every tool in this store is a one-time purchase: install it on your own server, keep your own data, and never see a renewal invoice.

Affiliate program
Recommend tools people own — earn 35% on every sale. 90-day tracking, instant delivery, payouts by Lemon Squeezy.
Become an affiliate →
Ownware Business tools you own.  ·  [email protected]
No spam — product launches and guides only.
Catalog · Categories · Alternatives · Guides · Price Observatory · State of Self-Hosted 2026 · Ownware Cloud · Changelog · Search · Your purchases · FAQ · Legal · Support · Press kit · Affiliates — earn 35% Powered by Deliora (self-hosted)