Configuration Architecture
OpenEyes loads configuration in a specific order, with later configurations overriding earlier ones:Core Environment Configuration
Environment-specific settings (
protected/config/core/main.php, test.php, etc.)The configuration loading is managed by
OEConfig::getMergedConfig() in protected/config/OEConfig.php:40.Configuration Files
Main Configuration Entry Point
File:protected/config/main.php
OEConfig which merges all configuration sources.
Core Common Configuration
File:protected/config/core/common.php
Contains essential application settings:
- Database Connection: Configuration for MySQL/MariaDB
- Authentication Manager: Role-based access control (RBAC)
- Application Components: Core services and utilities
- Module Definitions: Active modules and their settings
Local Configuration
Local configurations allow you to override default settings without modifying core files:protected/config/local/common.php- Common local settingsprotected/config/local/main.php- Main application local overridesprotected/config/local/console.php- Console command overrides
Database Configuration
OpenEyes supports multiple methods for database configuration:1. Legacy Configuration File
File:/etc/openeyes/db.conf
2. Environment Variables
Recommended for containerized deployments:3. Docker Secrets
Most secure option for Docker deployments:The system checks for configuration in this order:
/etc/openeyes/db.conffile- Docker secrets in
/run/secrets/ - Environment variables
- Default values
protected/config/core/common.php:30-40)Environment Variables
Database Settings
MySQL/MariaDB host address
Database server port
Database name for OpenEyes
Database username
Database password
Application Settings
Operating mode:
DEV, LIVE, or TESTInstitution identifier code
IP addresses allowed to see debug bar (use
* for all in development)System timezone
Authentication Settings
Authentication method:
BASIC, LDAP, SAML, or OIDCLDAP server URL for LDAP authentication
Single Sign-On (SSO) Configuration
Base URL for SAML SSO
OIDC provider URL
OIDC client identifier
OIDC client secret (can also use Docker secret)
Enforce strict role checking for SSO users
Password Policy Settings
Allow users to change their passwords
Minimum password length
Password complexity requirements
Days until password expires
Days until inactive account is locked
Portal Integration
Enable patient portal integration
Internal portal URI
External portal URI for patient access
Module Configuration
Each module can have its own configuration file:Settings Management
OpenEyes includes a comprehensive settings system managed through the database:Setting Hierarchy
Settings can be defined at multiple levels (from most specific to least):- User (
setting_user) - User-specific settings - Firm (
setting_firm) - Context/firm-specific settings - Institution + Subspecialty (
setting_institution_subspecialty) - Subspecialty (
setting_subspecialty) - Specialty (
setting_specialty) - Site (
setting_site) - Institution (
setting_institution) - Installation (
setting_installation) - System-wide defaults
The
SettingMetadata model (protected/models/SettingMetadata.php) manages this hierarchy and provides caching for performance.Setting Metadata
Settings are defined in thesetting_metadata table with:
key- Unique setting identifiername- Display namefield_type_id- Input type (text, dropdown, checkbox, etc.)default_value- Default valuedata- Additional configuration (e.g., dropdown options)lowest_setting_level- Minimum level at which setting can be overridden
Accessing Settings in Code
Configuration Best Practices
Use Environment Variables
Prefer environment variables over hardcoded values for deployment flexibility
Leverage Docker Secrets
Use Docker secrets for sensitive data in containerized environments
Don't Modify Core Files
Use local configuration files to override defaults
Version Control Carefully
Never commit sensitive data like passwords or API keys
Configuration Examples
Development Environment
Production Environment
LDAP Authentication
Troubleshooting
Configuration Not Loading
- Check file permissions on configuration files
- Verify PHP syntax in config files
- Check Docker logs:
docker-compose logs web - Ensure environment variables are properly set
Database Connection Issues
- Verify database credentials
- Check network connectivity to database host
- Ensure database exists and user has proper permissions
- Review
protected/runtime/application.log
Module Not Loading
- Check module is listed in
modulesarray - Verify module path exists
- Check module’s
config/common.phpfor errors - Clear cache:
./yiic cache flush all