DeployGroveDocumentationOpen dashboard

Deploy PHP 8.4

Prepare and deploy plain PHP, Laravel, Symfony, WordPress, and Drupal with Apex Apache on DeployGrove.

Put the manifest and lockfile at the repository root. Commit source and lockfiles, but keep credentials, local dependencies, virtual environments, and database files out of Git. DeployGrove scans the whole checkout: Dockerfiles, Containerfiles, Compose files, symlinks, Git submodules, package-manager config files, and unsupported dependency sources are rejected, even in unused folders.

Repository layout

my-app/
  composer.json
  composer.lock
  public/
    index.php
    .htaccess

Commit both Composer files, even for a small plain PHP app. Run composer install locally to create the lockfile. Choose public for this layout. Laravel and Symfony commonly use public/; Composer-based Drupal often uses web/. Choose root only when the public entry belongs at the repository root.

A small PHP app

<?php
header('Content-Type: text/plain');
echo 'Hello from DeployGrove';

Save this as public/index.php. The managed Apex Apache runtime serves PHP 8.4 on port 8080. You do not add a web-server command.

Framework and build rules

Supported choices include plain PHP, Laravel, Symfony, WordPress, and Drupal. DeployGrove runs composer install --no-dev --classmap-authoritative --no-interaction --no-progress. Keep runtime packages in require. The stack supplies a fixed extension set; you cannot add operating-system packages or extensions.

Build frontend assets before committing them; the PHP recipe does not run npm or a frontend build. Use the project environment for app keys, production mode, and database values. Plan migrations and writable upload storage before release. Files in the app image are not a persistent data store.

Apache accepts rewrite rules in .htaccess, but admission rejects php_value, php_flag, AddHandler, SetHandler, AuthConfig, Require, and Options. Review framework defaults before you deploy. The platform checks /healthz; also test a real app page and database access after launch.

PHP rollback is disabled. To restore older code, revert it in Git and deploy a new revision. A code change does not undo database changes.

Ready to release? Follow the deploy steps and account setup.