8 MIN READ · Pedro Thomaz

OVH Shared Hosting in 2026: What PHP 8.3 Can (and Can't) Run

OVH shared hosting runs PHP 8.3 well in 2026 — if you accept no root, no long-running processes, and tight cron limits. Here's exactly what it can and can't do.

OVH Shared Hosting in 2026: What PHP 8.3 Can (and Can't) Run

OVH shared hosting in 2026 runs PHP 8.3 perfectly well for a server-rendered site, but it is not a server you control. You get a managed Apache + PHP container, a document root at /www/, and a fixed menu of versions and limits. You do not get root, you cannot keep a process alive, and your cron schedule is rationed. If your app fits inside "request comes in, PHP renders HTML, request ends," it's an excellent, cheap, durable home. If you need a daemon, a websocket, or Postgres, you've outgrown it. This is the honest map of the territory, drawn from running amplifiedcreations.com on exactly this stack.

What OVH shared hosting can run with PHP 8.3

The short version: anything that is stateless and request-scoped. A classic LAMP-style PHP application, a server-rendered CMS, a static-plus-PHP hybrid, WordPress, Laravel in its more modest configurations, a Cockpit CMS install on SQLite — all fine. We run a no-build-step PHP 8.3 application: requests hit Apache, PHP renders HTML, the response goes back through Cloudflare. No Node process, no PM2, no Redis. The host is doing exactly the one thing shared hosting is good at.

What you actually get on a current OVH shared plan:

That covers the overwhelming majority of content sites, brochure sites, small e-commerce, and CMS-backed marketing sites. It is genuinely enough.

Pin your PHP version with .ovhconfig — don't trust the panel

The single most important file on an OVH shared account is .ovhconfig at the document-root level. It pins the runtime so a panel toggle or an OVH-side default change can't silently move you to a different PHP version between deploys. Ours is five lines:

app.engine=php
app.engine.version=8.3
http.firewall=none
environment=production
container.image=stable64

Treat .ovhconfig as code and commit it to your repo. A few field notes earned the hard way:

If you only take one thing from this post: the panel dropdown is a suggestion, .ovhconfig is the source of truth.

No root, no long-running processes — design around it

Shared hosting is shared. You are one tenant in a container, so you have no root, no systemd, and no way to keep a process alive between requests. This is the constraint that decides whether the platform fits, so be brutally honest with yourself about it.

Concretely, the following are off the table:

The mental model that keeps you sane: every unit of work must start and finish inside a single HTTP request or a single cron invocation. No state lives in memory between them. We designed our application to be entirely stateless precisely so this constraint never bites — dynamic content lives in the CMS and in SQLite, never in a long-lived process.

Cron on OVH: rationed, not free

You do get cron, and for a stateless PHP app cron is how you do all your "background" work. But the limits are real and you should plan for them:

Our entire scheduled-work footprint is one daily job that prunes generated cache files:

php /www/lib/cache_prune.php

That script deletes generated OpenGraph and resized-image cache files older than 60 days, touching only an explicit allow-list of subdirectories under storage/cache, and returns counts so the cron output is inspectable. Anything heavier than a tidy-up-and-exit task is the wrong shape for shared cron. When we needed real automation — minify, upload, cache purge — we kept it on our own machine in a deploy script, not on the host.

SQLite vs a managed database

This is the decision people overthink. On OVH shared hosting you have two sane options, and the right one is usually the simpler one.

SQLite is a single file on disk read and written by the PHP process. No network round-trip, no credentials, no second service to monitor. We run Cockpit CMS v2 on SQLite and it is the right call for a content site: the read volume is high, write volume is low (an editor saving a post, occasionally), and Cloudflare absorbs most reads before they ever reach PHP. SQLite is excellent for read-heavy, write-rare workloads with one application writing to it.

Where SQLite stops being the answer:

OVH's bundled MySQL/MariaDB is the move when you have genuine write concurrency, multiple apps sharing data, or a framework that expects a client/server database. It's a managed service — you don't tune it, you just get a connection string. For most CMS-backed sites it's more than you need; for transactional apps it's the floor.

When to graduate to a VPS

We're advocates for staying on shared hosting as long as it genuinely fits — it's cheap, the host patches the OS, and there's no server for you to leave insecure. But there's a clear line. Move to a VPS the moment your architecture needs something request-scoped PHP can't express. The honest checklist:

The tradeoff is real and goes both ways: a VPS gives you root and removes every limit above, but now you patch the kernel, configure the firewall, and own every 3 a.m. outage. For a site that is fundamentally "render HTML per request," that's a downgrade in reliability and an upgrade in your maintenance burden. We've kept amplifiedcreations.com on shared hosting on purpose.

The short version

Shared hosting gets dismissed as a beginner's tier. It isn't. It's a deliberate constraint, and for a server-rendered site that respects the constraint, it's one of the most reliable and cheapest places you can ship. Know exactly where the walls are, build inside them, and it'll outlast three framework hype cycles.