Overview
Envloom supports per-site configuration overrides through a.envloom.json file placed in your project’s root directory. This allows different sites to use different PHP versions, Node versions, or custom settings without affecting the global defaults.
Current Per-Site Configuration
While.envloom.json is not yet supported, you can configure per-site settings through the Sites UI:
PHP Version Override
Each site can use a different PHP version:- Open Envloom and navigate to Sites
- Select your site from the list
- Use the PHP Version dropdown to select a different version
- Click Apply to regenerate the nginx configuration
Site Record Storage
Site configurations are currently stored insites.json within the Envloom data directory:
sites.json
Planned .envloom.json Support
In future versions, Envloom will support per-project configuration files with the following structure:File Location
Place.envloom.json in your project root:
Proposed Configuration Schema
.envloom.json (Planned)
Configuration Inheritance
The planned behavior will follow this hierarchy:- Global Defaults: Settings from
~/.envloom/config.jsonand UI configuration - Runtime Defaults: Version-specific defaults from
config/php/,config/mariadb/, etc. - Per-Site Overrides: Values from
.envloom.jsontake precedence
Per-site configuration will inherit from global settings by default, only overriding explicitly specified values.
Current Workarounds
PHP Version Per Site
Use the UI to assign different PHP versions:- Navigate to Sites > example.test
- Select PHP 8.2 from the dropdown
- Click Apply
Node Version Per Site
While per-site Node versions aren’t enforced by Envloom, you can usenvm directly in your project:
Custom php.ini Settings
For project-specific PHP settings, create a custom.user.ini in your project’s public directory:
public/.user.ini
Environment-Specific .env
For Laravel projects, use.env for database and application configuration:
.env
APP_URL when you provision a new site.
Implementation Status
According toFEATURES.md, per-site configuration is tracked as:
The core infrastructure for per-site overrides exists in the
SiteRecord model, but .envloom.json file support is not yet implemented.Viewing Current Site Configuration
You can inspect a site’s current configuration through:Desktop UI
- Navigate to Sites
- Click on the site name
- View the configuration panel showing:
- Domain
- Path
- PHP version
- SSL status
- Link status
CLI (Planned)
Future CLI support will include:Best Practices
Version Pinning
Version Pinning
Always specify exact major versions for PHP (e.g.,
8.3 instead of latest) to ensure consistency across team members and environments.SSL by Default
SSL by Default
Enable SSL for all local sites to match production environments and avoid mixed-content warnings during development.
Document Custom Settings
Document Custom Settings
If you modify nginx configs or use custom
.user.ini files, document these in your project’s README so team members can replicate the setup.Avoid Hardcoded Ports
Avoid Hardcoded Ports
Let Envloom manage PHP-FPM ports automatically. The port calculation is based on the PHP version:
base_port + (major * 10) + minor.Example:- PHP 8.3 → Port 9083 (9000 + 83)
- PHP 8.1 → Port 9081 (9000 + 81)
Migration Path
When.envloom.json support is added, existing site configurations will be automatically migrated:
- Envloom will read your current
sites.jsonconfiguration - Generate
.envloom.jsonfiles in each project directory - Preserve all existing settings (PHP version, SSL status, domain, etc.)
- Maintain backward compatibility with
sites.jsonduring the transition
Related Configuration
Global Settings
Configure application-wide defaults and behavior
File Paths
Understand where configurations, logs, and binaries are stored
Site Management
Learn how to create, link, and manage sites
PHP Runtime
Configure PHP versions, extensions, and settings