DeployManage, server management for any cloud

PHP Deployment Tool to Deploy PHP Applications to Your Own Servers With Zero Downtime

Connect a server, point a site at its GitHub, GitLab or Bitbucket repository and push. DeployManage clones every release into a fresh folder, links the shared .env and storage, runs your deploy script there and switches the live symlink in one step, so visitors never hit a half updated codebase. Laravel, Symfony, WordPress and plain PHP apps on PHP 8.1 to 8.4.

One-time demo, no credit card required.

Deployer, Envoyer, DeployHQ and Laravel Forge figures read from their own sites and READMEs in October 2026. Your servers stay in your own cloud account.

Servers 5 online
New server
Servers
Sites
Deployments
Databases
Mailboxes
Recipes
Activity
Server Provider Load
web-01.prod
fsn1
Hetzner
32%
web-02.prod
fsn1
Hetzner
47%
db-01.prod
fra1
DigitalOcean
18%
worker-01
eu-central-1
AWS
61%
mail-01
gra
OVHcloud
9%
Deploy to web-01.prod Live
  • Pull main from GitHub
  • Build and migrate
  • Switch release, zero downtime
Finished in 11.3 s
The short answer

A PHP deployment tool takes code from git and puts it on a server without breaking the live site. The safe pattern, used by Deployer, Envoyer and DeployManage, is a new release directory per deploy and an atomic symlink switch at the end. Deployer is a free command line tool you run and maintain yourself; Envoyer ($10 to $50 a month) deploys PHP to servers you already built; DeployManage ($59 to $299 a month, half price billed yearly) also provisions the server, installs PHP and Nginx, runs queue workers and gives a team seats and an activity log.

Developer in a lamp lit home office watching a deployment run on a laptop and a monitor

Why PHP teams outgrow a deploy script on a laptop

Most PHP deployments start as a shell script or an FTP upload that one developer runs. It works until the second developer joins, or until a Composer install fails halfway and the site serves a broken vendor folder for four minutes while someone fixes it over SSH.

A deployment tool fixes three things at once. Every release builds next to the live one instead of on top of it, every deploy is recorded with who ran it and which commit went out, and going back means redeploying a known good commit rather than reconstructing yesterday's files by hand.

What the PHP deployment tool does on every push

A fresh folder for every release

Each deploy clones the branch into releases/<timestamp> next to the live code. The current release keeps serving traffic while the new one installs, so a slow Composer run or a failed build never touches what visitors see. Atomic releases are on the Growth and Business plans.

One step switch to the new code

When your script finishes without an error, the current symlink is replaced in a single rename and PHP-FPM reloads. If the script exits non zero, the switch never happens and the previous release stays live.

Composer and framework steps built in

The default script runs composer install with --no-dev and an optimized autoloader. When the repo has an artisan file it also runs migrate --force, caches config, routes and views, and restarts queue workers. Edit the script for Symfony, WordPress or anything else.

Shared .env and storage across releases

The site's .env lives once at the site root and is linked into every release, and the storage directory is moved out and shared, so uploads, sessions and logs survive each deploy instead of being reset.

GitHub, GitLab, Bitbucket or any git URL

Connect the repository and branch per site. Quick deploy adds a signed webhook so a push to the branch starts a release, or keep it manual and press Deploy when you are ready.

The server comes with the tool

Create servers on DigitalOcean or Hetzner Cloud straight from the panel, or run one install command as root on any Ubuntu box at AWS, Vultr, Linode or OVHcloud. Nginx, PHP-FPM, Composer, MySQL or Postgres, Redis, Supervisor, cron, a firewall and Let's Encrypt are set up the same way on each.

PHP 8.1 to 8.4 per site

Pick the PHP version for each site, so an older app on 8.1 and a new one on 8.4 can share a server. The web root is configurable per site, which covers Laravel's public directory, Symfony's public directory and a WordPress root alike.

Queue workers and scheduled jobs

Long running PHP processes run under Supervisor and restart after a deploy, and cron jobs are managed from the same screen. No separate process manager to install or babysit.

Seats and an activity log

Every deploy, server change and site change is recorded against the team member who made it. Starter includes 2 members, Growth 10 and Business unlimited, so contractors get their own login instead of a shared SSH key.

How it works

  1. 1
    Add or create a server

    Paste a DigitalOcean or Hetzner token and launch a server in a US region, or run the one line installer on an Ubuntu server you already have at any provider.

  2. 2
    Create the site and connect git

    Choose the project type (General PHP or Laravel, Symfony, WordPress or static HTML), the PHP version and the web directory, then connect the repository and branch.

  3. 3
    Paste the environment and review the script

    Add the .env contents once. Read the default deploy script, which runs inside the new release, and add your own steps such as a Symfony cache warmup or wp-config linking.

  4. 4
    Push to deploy

    Press Deploy or push to the branch with quick deploy on. Watch the log live, and the release goes live only when every step has passed.

PHP deployment tools compared on price and scope

The tools below all get PHP code from git onto a server. They differ in who runs them, whether they build the server too, and what the monthly bill covers. Prices are list prices in USD unless marked.

swipe to see all columns →

What you are comparing DeployManage Deployer Envoyer DeployHQ Laravel Forge
What it is Server panel with atomic deploys on your servers Open source command line deploy tool Hosted zero downtime deploys for PHP Hosted deployment service Laravel server panel with deploys
Price $59, $129 or $299 a month; half price billed yearly No licence fee (MIT), you run it $10, $20 or $50 a month Free tier, then EUR 9, 19, 39 or 99 a month $12, $19 or $39 a month
Builds and patches the server Yes, Nginx, PHP-FPM, database, Redis, Supervisor No, you prepare the server No, connects to existing servers No, connects to existing servers Yes
Release folders and symlink switch Yes, Growth and Business Yes Yes Yes, zero downtime deployments Yes, one server per site
Where deploys run From the panel or on git push From your laptop or CI job From Envoyer on git push From DeployHQ on git push From Forge on git push
Team access 2, 10 or unlimited members with an activity log Whoever has the SSH key Unlimited members on every tier Varies by plan Varies by plan
Queue workers and cron Managed in the panel Not included Not included Not included Managed in the panel
Best for Teams and agencies running several PHP apps on their own servers One developer who is happy maintaining scripts Teams with servers already built who only need deploys Mixed stacks deploying over SSH or SFTP Laravel shops on a budget with one server per site

Who it's for

An agency with 20 or more client PHP sites

Laravel apps, a few Symfony projects and a handful of WordPress sites, spread over four or five servers. One panel holds them all, each client site deploys the same way, and contractors get their own seats instead of the agency's root key.

A product team leaving a hand written deploy script

The script lives on one laptop and does git pull in the live directory. Moving to release folders removes the minutes of broken pages during composer install, and the deploy log shows who shipped what.

A team that tried Deployer and wants it hosted

Deployer's recipe model is good, but someone has to keep PHP, the deploy host and the SSH keys in order. A hosted tool keeps the same release folder pattern and adds a UI, webhooks and permissions.

A business that must keep servers in its own cloud account

Security reviews, cloud credits or a client contract can rule out a managed platform. The servers here stay in your DigitalOcean, Hetzner, AWS, Vultr, Linode or OVHcloud account and on your own invoice.

What is the best deployment tool for PHP?

For a team or agency running several PHP apps on its own servers, the best PHP deployment tool is one that also builds the servers and runs the workers, and DeployManage Growth at $129 a month covers 10 servers, 50 sites per server and 10 members with atomic releases. For a single developer who is comfortable maintaining scripts, Deployer is the strongest choice and has no licence fee. For a team whose servers are already built and only needs deploys, Envoyer at $10 to $50 a month is cheaper.

The honest split is about scope. Deployer, Envoyer and DeployHQ deploy code. Laravel Forge and DeployManage deploy code and also install and patch the server underneath it. If you already have a sysadmin keeping Nginx, PHP and Supervisor in shape, a deploy only tool is enough. If nobody on the team wants that job, the panel is what you are really buying.

Laravel Forge is the cheaper panel at $12 to $39 a month. Its native zero downtime deploys are limited to one server per site, which is fine for most apps. DeployManage costs more and is aimed at teams that want more seats, a per member activity log and several PHP frameworks in one place.

How do I deploy a PHP application with zero downtime?

Build each release in a new directory, finish every install and build step there, then switch a symlink that the web server points at. Because the switch is a single filesystem rename, requests either hit the old release or the new one, never a mix. Shared files such as .env, uploads and logs live outside the release folders and are linked in.

In DeployManage the layout on the server looks like this:

Your deploy script runs inside the new release with DM_RELEASE_DIR and DM_COMMIT set, so a step such as php bin/console cache:warmup or a WordPress uploads link works without hard coded paths. If any command fails, the script stops and current keeps pointing at the old release.

One thing a symlink switch cannot fix on its own is a database migration that breaks the old code. Add columns before you use them and drop them a release later, and both releases can run against the same schema for the seconds the switch takes.

How do I deploy a PHP application to a server?

Install a web server and PHP-FPM on the server, put the code in a directory the web server serves, install dependencies with Composer, write the environment file and point a domain at it with TLS. Every later deploy repeats the code and dependency steps.

Done by hand, that first setup is an afternoon of apt installs, an Nginx server block, a PHP-FPM pool, a Let's Encrypt certificate and a Supervisor config if the app has queue workers. The repeat steps are where most outages happen, because git pull and composer install in the live directory leave the site half updated while they run.

A deployment tool turns the first setup into a form and the repeat steps into a button or a push. With DeployManage you create the server, add the site with its domain, project type and PHP version, connect the repository and press Deploy. The certificate is issued with Let's Encrypt from the site screen.

Deployer vs a hosted PHP deployment tool

Deployer is a free, MIT licensed PHP tool that deploys over SSH from your machine or a CI job, with recipes for Laravel, Symfony, WordPress and other frameworks, release folders and rollback. It is excellent at the deploy itself. What it leaves to you is everything around it.

JobWith DeployerWith DeployManage
Run the deploydep deploy from a laptop or a CI pipeline you maintainA button or a git push webhook
Build the serverSeparate scripts, Ansible or by handIncluded, same stack on every server
Who can deployWhoever holds the SSH keyNamed members, each action logged
Queue workersYour own Supervisor configManaged per site
Software costNone, plus the hours to maintain it$59 to $299 a month

If one person deploys one or two apps, stay on Deployer. The case for paying starts when several people deploy, when servers multiply, or when the developer who wrote the recipes leaves.

How much does a PHP deployment tool cost?

Between nothing and about $300 a month for the software, plus the servers. Deployer has no licence fee. Envoyer is $10, $20 or $50 a month by project count with unlimited members. DeployHQ has a free tier and paid plans of EUR 9 to EUR 99 a month. Laravel Forge is $12, $19 or $39 a month. DeployManage is $59 (3 servers, 2 members), $129 (10 servers, 10 members, atomic releases and quick deploy) or $299 (unlimited), and half that per month when billed yearly.

A worked example for a small agency with 12 PHP sites on two 4 GB servers at $24 each:

SetupServersSoftwareMonthly total
Deployer, servers built by hand$48$0$48 plus maintenance time
Envoyer Plus (20 projects), servers built by hand$48$20$68
Laravel Forge Growth$48$19$67
DeployManage Growth, monthly$48$129$177
DeployManage Growth, billed yearly$48$64$112

On price alone Forge and Envoyer win this table, and we would rather say so than have you find out later. What the DeployManage line pays for is that nobody on the team builds servers or keeps Supervisor configs, that 10 people get their own logins with an activity log, and that Laravel, Symfony and WordPress sites run on the same panel.

Which PHP frameworks and apps can it deploy?

Any PHP application that installs with Composer or ships as plain files. The project types in the site form are General PHP or Laravel, Symfony, WordPress and static HTML, and the deploy script is yours to edit, so Statamic, Craft CMS, Drupal, Slim or a legacy app without a framework deploy the same way.

Framework pages with worked setups:

The provisioning script installs PHP and Composer but not Node. If your release builds front end assets, build them in CI and commit or upload the result, or install Node on the server once and call npm from the deploy script.

Can I roll back a PHP deployment?

Yes. Redeploy the last known good commit and it goes live as a new release through the same symlink switch, usually in under a minute for a typical Composer app. The five most recent release folders stay on disk, which keeps the previous code available while you investigate.

Rolling back code does not roll back the database. If the bad release ran a migration, write a follow up migration rather than restoring a backup over live data, unless the data itself is damaged.

Ready to stop managing servers by hand? DeployManage provisions, deploys and monitors your fleet from one dashboard.

Get started

Frequently asked questions

What is the best deployment tool for PHP?

For teams running several PHP apps on their own servers, a panel that deploys and also builds the servers, such as DeployManage Growth at $129 a month. For one developer, Deployer has no licence fee and does atomic deploys over SSH. For deploy only on servers you already run, Envoyer costs $10 to $50 a month.

How do I deploy a PHP application with zero downtime?

Build each release in a new directory, run Composer and any build or migration steps there, then switch a symlink that the web server serves. The switch is one rename, so requests never see a half installed release. Keep .env, uploads and logs in a shared directory linked into each release.

Is Deployer free?

Yes. Deployer is open source under the MIT licence and has no fee. You run it yourself from a laptop or a CI job and keep the recipes, the SSH keys and the servers in order. Hosted tools charge for running that for you and for the parts Deployer does not cover.

Does DeployManage work with Symfony and WordPress, not only Laravel?

Yes. Symfony, WordPress, General PHP and static HTML are project types when you add a site, the PHP version is set per site from 8.1 to 8.4, and the deploy script is editable, so Craft CMS, Statamic and Drupal deploy with the same release folder flow.

Can I deploy PHP from GitHub, GitLab and Bitbucket?

Yes. Each site connects to a GitHub, GitLab or Bitbucket repository, or any git URL, and a branch. With quick deploy on (Growth and Business), a push to that branch starts a release through a signed webhook. Without it, you press Deploy in the panel.

Which plan includes zero downtime deployments?

Atomic releases with release folders and the symlink switch are on Growth ($129 a month, or $64 billed yearly) and Business ($299, or $149 billed yearly). Starter at $59 deploys in place and suits sites where a few seconds of reload during a deploy are acceptable.

Do I need to know Linux to use a PHP deployment tool?

Less than you would without one. DeployManage installs and configures Nginx, PHP-FPM, the database, Redis, Supervisor, cron, the firewall and certificates for you. You still need to read your deploy log and understand your own app's build steps, but not write server configs.

Related

Laravel deployment tools Symfony deployment WordPress git deployment Laravel Envoyer alternative DeployHQ alternative Laravel Forge alternative Deploy from git Deployment rollback Platform.sh alternative

Deploy your PHP app as an atomic release.

Connect a server, add a site from GitHub, GitLab or Bitbucket and push your first release. Every account starts with a one-time demo, no card required.

Get started Pricing

One-time demo, no credit card required.