Why a managed PHP runtime beats a raw VPS
On a bare VPS you own the whole stack: OS updates, the PHP-FPM pool, the web server config, TLS renewal, firewall rules, and the database daemon. Any one of them drifting breaks the site, and most of that work has nothing to do with your application. The managed PHP platform gives you a supported PHP 8 runtime with the usual extensions already present, so your responsibility shrinks to the code, its dependencies, and its configuration — the parts that are actually yours.
Framework-friendly for Laravel and Symfony
Modern frameworks expect a specific layout: a public/ document root, a writable storage or var directory, and Composer-managed dependencies. The platform maps to that directly — you set the document root to public/ and keep the rest of the tree private. The phpredis extension is available on the runtime, so an app that connects to its own Redis works without a custom build; if you want a managed Redis instance provisioned for you, that is a Container Apps add-on.
A managed MySQL database without being a DBA
Standing up MySQL yourself means tuning, backups, user management, and keeping it patched. Here the database comes managed with the account: it is provisioned for you, the credentials are shown in the panel, and you paste them into your app's configuration. Rotating the password is a panel action, and the datastore is maintained separately from your application runtime.
Deploy simply — and know where the Git pipeline lives
Not every PHP project is on Git, and a small site or a legacy app uploaded through the file manager can be live in minutes — that is the workflow this platform is built around. When a project outgrows it and wants push-to-deploy, build steps and deploy logs, the right home is Container Apps with GitHub Deploy: you containerize the app once and get the full Git pipeline there.
Edge cache and WAF in front of dynamic PHP
PHP applications spend real CPU rendering pages, so serving cacheable responses from the edge directly protects your runtime from load. You decide which routes are safe to cache — a public catalog or article — and which always execute, like a logged-in dashboard or a POST endpoint. The WAF sits at the edge in front of the application, filtering injection and scanner traffic before it reaches PHP, and Auto SSL keeps HTTPS valid without a renewal cron.
A controlled path for modernizing legacy PHP
Old applications written for PHP 5 or an unmaintained CMS are risky to touch, but they can't stay on an end-of-life runtime forever. The platform gives you a place to bring the code, move its database into managed MySQL with the correct character set, and run it on PHP 8 where you can find and fix the deprecations. You validate on a temporary URL and put the WAF in front of a codebase that no longer receives security patches, so the public attack surface is reduced even before the code is fully cleaned up.
How to deploy, step by step
Create the PHP app and pick the runtime
In the panel open Platform, choose PHP, and select the PHP 8 version and plan. The runtime ships with the common extensions PHP apps expect — PDO, mbstring, GD, OpenSSL, and the Redis extension — so you are not filing tickets to get an extension enabled.
Get your code onto the platform
Upload your application through the built-in file manager — for framework apps you set the document root to the public/ directory and keep the rest of the tree private. If your team wants Git push-to-deploy with build steps, that workflow is what Container Apps with GitHub Deploy is for; the PHP platform keeps deployment deliberately simple.
Connect the managed MySQL database
A managed MySQL database is provisioned with your hosting account. Its host, name, user and password are shown in the panel — you put them in your app's .env or config yourself, and you can reset the password from the panel at any time without touching the database server, because there is no database server for you to run.
Point the domain and issue Auto SSL
Attach your domain or a name.cdn.com.tr subdomain, and Auto SSL issues and renews the certificate for apex and www. Traffic now reaches the cdn.com.tr edge first, where SSL termination happens before requests are proxied to your PHP runtime.
Set edge cache and WAF rules
Define which routes are cacheable at the edge and which always hit PHP, and apply a WAF profile. Cacheable responses are served from the edge without waking your runtime, and a purge from the panel or API clears them instantly after you upload a new release.
Example scenarios
A Laravel app runs on the managed PHP 8 runtime with the managed MySQL database, served behind Auto SSL, edge cache and WAF.
An old custom-CMS portal is moved onto PHP 8 with a managed database, put behind the WAF, and modernized route by route without downtime.
A hand-written PHP API runs on the managed runtime with the managed MySQL database, exposed on a domain with edge SSL termination and WAF filtering in front.
Frequently asked questions
Which PHP extensions are available on the runtime?
The PHP 8 runtime ships with the extensions typical apps depend on — PDO and MySQL drivers, mbstring, GD for image handling, OpenSSL, cURL, and the phpredis extension for apps that connect to a Redis of their own. Because the extension set is standard, Laravel, Symfony, and most Composer packages install without a custom build.
Can I run a Laravel queue worker or scheduled tasks?
Not on the PHP platform — it runs your app per web request and has no worker or cron manager. If your app depends on queue workers or scheduled jobs, run it as a Container App instead: containers are long-running processes, and that platform also offers managed Redis as a queue backend.
How do database credentials reach my app?
The managed MySQL credentials — host, database name, user, password — are shown in the panel. You put them in your .env or config file on the platform (outside the web-served path), so they never need to be committed to Git, and you can reset the password from the panel without a support ticket.
My app targets PHP 7 — will it run on PHP 8?
Most maintained code runs on PHP 8 with minor adjustments, but PHP 8 removed some deprecated behavior. The right approach is to bring the code onto the platform, run it on a temporary URL, and fix the deprecations you find before switching the domain — the managed runtime gives you a safe place to do exactly that.
Do I set the document root to public/?
Yes. For Laravel, Symfony, and similar frameworks you point the web root at the public/ directory so the rest of the application tree — including .env, vendor, and storage — stays outside the web-served path. Legacy apps that serve from their top-level directory are supported too; you set the root accordingly.
How do I handle file uploads that must survive a redeploy?
The app has a persistent volume for user data, and for media-heavy apps you can offload uploads to object storage and serve them through the CDN instead of the runtime. That keeps deploys fast and stateless, and it means a redeploy or scale event never risks the uploaded files.