Configuration
Chamilo 2.0 uses environment variables and Symfony configuration files for its core settings. This page covers the key configuration files and variables.
Environment Variables (.env)
The primary configuration file is .env in the Chamilo root directory. This file contains environment-specific settings that should not be committed to version control.
A default .env.dist file ships with Chamilo and contains documented defaults. Create .env (required to start the installation) to override values for your environment.
Key Variables
APP_ENV
The application environment, at the Symfony level. Use prod for production, dev for development, 'test' for testing.
prod
APP_SECRET
A random string used for CSRF tokens, cookie signing, and other cryptographic operations. Chamilo generates a unique value for each installation. Don't modify it.
a1b2c3d4e5f6...
DATABASE_HOST
The database host. Defaults to localhost
localhost
DATABASE_PORT
The database port. Defaults to 3306 for MySQL/MariaDB
3306
DATABASE_NAME
The database name, as given by you to the installation wizard.
See below.
DATABASE_USER
The database username, as given by you to the installation wizard.
See below.
DATABASE_PASSWORD
The database user's password, as given by you to the installation wizard.
See below.
TRUSTED_PROXIES
(Optional) If you are hosting Chamilo behind a reverse proxy, you need to provide the IP(s) of the reverse proxy here for Chamilo to be able to interpret calls and generate responses correctly.
Other settings in .env are relatively rarely modified.
Note that, in future versions, the DATABASE_* settings will be combined into one single DATABASE_URL variable.
E-mail sending configuration is presented during installation, but can be modified later on in the Platform settings section of the administration dashboard.
Symfony Configuration (config/ Directory)
Symfony-level configuration lives in the config/ directory. These YAML files control framework behavior, service definitions, and package-specific settings.
It is not frequent to have to modify those files, and changing them can render your portal inoperative, so please do not attempt to modify those if you must ensure the system's availability.
Key Configuration Files
config/authentication.yaml
Authentication methods configuration.
config/packages/doctrine.yaml
Database and ORM configuration.
config/packages/security.yaml
Authentication, firewalls, access control, and role hierarchies.
config/packages/cache.yaml
Cache adapter configuration (filesystem, APCu, Redis).
config/packages/framework.yaml
General Symfony framework settings (session, CSRF, router, HTTP caching).
config/packages/twig.yaml
Template engine configuration.
config/services.yaml
Application service definitions and dependency injection.
Environment-Specific Overrides
Symfony supports per-environment configuration. Files in config/packages/prod/ override the defaults when APP_ENV=prod, and config/packages/dev/ overrides when APP_ENV=dev.
For example, config/packages/prod/monolog.yaml typically configures less verbose logging than the development equivalent.
Chamilo does not define any configuration in config/packages/prod/ in the software itself, so if you want to customize setting from config/packages/*.yaml, just create a copy of the yaml file inside that directory and change the settings there.
File Permissions
We made efforts in 2.0+ to ensure that a single directory needed permissions. This is the var/ directory, and to avoid complex issues, just setting the whole folder as writeable by the web server system user is enough.
Set permissions appropriately under Debian-based systems:
Common Configuration Tasks
Switch to Production Mode
Then clear and warm the cache:
Configure Trusted Proxies
If Chamilo runs behind a reverse proxy or load balancer, configure trusted proxies so that HTTPS detection and client IP resolution work correctly:
Configure Session Storage
By default, sessions are stored on the filesystem. For multi-server deployments, configure Redis or database-backed sessions:
Tips
Never edit
.env.distdirectly -- Always use.envfor your overrides. The.env.distfile may be overwritten during upgrades.Keep
APP_DEBUG=0in production -- Debug mode exposes sensitive information in error pages.Back up
.envseparately from the codebase since it contains credentials and is excluded from version control.
Last updated
Was this helpful?