PHP & Composer
Host Laravel, Symfony, Craft CMS, Drupal and any other Composer project. Every PHP site is built with Composer on each push and runs against a database of its own.
1What You Get
PHP hosting is its own plan family — PHP Starter and PHP Business. It is not part of a Static or WordPress plan, and PHP sites do not use up your WordPress site allowance. You can hold a PHP plan on its own or alongside another plan.
- PHP 8.3 with pdo_mysql, mysqli, mbstring, bcmath, gd, zip, intl, opcache, exif and pcntl
- nginx in front of php-fpm, in containers dedicated to your site
- A database and database user of your own, on a MariaDB instance kept separate from WordPress
- Automatic SSL and Cloudflare CDN on your subdomain and on any custom domain you connect
- Daily backups, and staging on PHP Business
2Supported Frameworks
Your framework is detected from composer.json
and its marker files. The framework decides the document root nginx serves and which
commands run after each deploy.
Detection runs Laravel first, then Symfony, Craft and Drupal, and falls back to a generic Composer project. What it found is shown on your site's page in the dashboard, and you can override the document root in Site Settings > Build & Deploy.
3Creating a PHP Site
PHP sites are always deployed from Git — the repository is how your application is installed, so you will be asked for one when you create the site.
- Subscribe to a PHP plan from Pricing or the Billing page
- In the dashboard, click Create Site and choose PHP / Laravel
- Give the site a name and paste your GitHub repository URL
- Pick a resource tier — small, medium or large
- Create the site, then trigger the first deployment
Your site is live on its Berican subdomain as soon as the first deploy finishes. Connect a domain you own from Domains whenever you're ready.
4How a Deploy Works
Every deployment runs the same sequence on our build host, then ships the built application to your site's container:
- Clone your repository at the branch and commit you deployed
- Resolve the app directory — useful when the app lives inside a monorepo
composer install --no-dev --optimize-autoloader --no-interaction- If the app has a
package.json(Laravel Vite, Symfony Encore), also runnpm ciandnpm run build - Ship the built tree to the server, excluding
.gitandnode_modules - Run the framework's post-deploy commands inside your PHP container
For Laravel that last step is
artisan migrate --force,
config:cache,
route:cache,
view:cache and
storage:link. Symfony warms its cache,
Craft and Drupal run their migrations.
Set an Install Command or Build Command in Site Settings to replace the Composer and npm steps entirely.
5Your Database
Each PHP site is given its own database and its own database user, on a MariaDB instance separate from the one that serves WordPress. The user's permissions are scoped to that one schema.
This is deliberate. Framework migrations are destructive by nature, so a PHP application must never share a database instance with live WordPress databases, and a migration that goes wrong must not be able to reach past its own schema.
Your credentials are injected as environment variables, so a standard framework config picks them up with no changes:
DB_CONNECTION=mysql
DB_HOST=php-mariadb
DB_PORT=3306
DB_DATABASE=your_site
DB_USERNAME=your_site
DB_PASSWORD=********
Add your own variables — API keys, mail credentials, APP_KEY —
under Site Settings > Environment Variables.
6Resource Tiers
Pick the tier that matches your traffic. Reservations are guaranteed headroom; limits are the hard ceiling.
| Tier | PHP memory | CPUs | php-fpm workers |
|---|---|---|---|
| Small | 256M / 512M | 0.5 | 8 |
| Medium | 512M / 1G | 1 | 16 |
| Large | 1G / 2G | 2 | 32 |
PHP itself runs with a 256M memory limit, 64M uploads, a 300s maximum execution time and opcache enabled. Changing tier is applied to the running containers — no rebuild and no downtime.