-
-
Notifications
You must be signed in to change notification settings - Fork 520
ChurchCRM Application Platform Prerequisites
This is the single source of truth for all ChurchCRM system requirements. All installation and deployment documentation should reference this page.
ChurchCRM has specific platform prerequisites, and a built-in mechanism to ensure that all prerequisites are met. If there are any unmet prerequisites, a message will be displayed during setup and a notification will be displayed during runtime.
Prerequisites are validated at every page load, so if the hosting environment is changed to an incomplete / unsupported model, a notification will appear.
Validation occurs in the getApplicationPrerequisites() function.
| Component | Requirement | Notes |
|---|---|---|
| PHP | 8.2 or higher | Required for all core functionality |
| Web Server | Apache 2.4+ with mod_rewrite | nginx may work but not officially supported |
| Database | MySQL 5.7+ or MariaDB 10.2+ | MariaDB 10.2+ or higher recommended |
| Memory | 256MB+ PHP memory limit | 512MB+ recommended for larger congregations |
| Storage | 500MB+ available space | Depends on attachments and data size |
ChurchCRM makes use of many features added with PHP 8.2. Lower versions will not work.
Status: REQUIRED
ChurchCRM makes use of many features added with PHP 8.2. Lower versions will not work.
Symptoms of failure:
- Errors and warnings about missing functions (especially
random_bytes()) - Setup process displays a message indicating installation below PHP 8.2 is not possible and will halt
Resolution:
- Shared Hosting (cPanel): Ensure PHP 8.2 or higher is selected for your site
- Self-Hosted Linux: Follow the steps at Install Self Hosted Linux or Self-Hosted on RockyLinux
- Local Development: Install via XAMPP, WAMP, or MAMP Pro
The following PHP extensions must be installed and enabled:
Purpose: Arbitrary precision arithmetic
Installation: php-bcmath package
Purpose: HTTP requests and external API communication
Installation: php-curl package
Purpose: Image manipulation (profile pictures, charts)
Installation: php-gd package
Purpose: Localization and translation support
Installation: php-gettext package
Purpose: Internationalization and Unicode support
Installation: php-intl package
Purpose: JSON encoding/decoding (API responses)
Installation: Usually bundled with PHP
Purpose: Multibyte string handling (UTF-8 support)
Installation: php-mbstring package
Purpose: MySQL/MariaDB database access
Installation: php-mysql or php-mysqli package
Purpose: PHP bytecode caching for performance
Installation: php-opcache package (recommended for production)
Purpose: PHP Archive support (installation/updates)
Installation: Usually bundled with PHP
Purpose: SOAP web services support
Installation: php-soap package
Purpose: Modern cryptography (password hashing, encryption)
Installation: php-sodium package
Purpose: XML parsing and processing
Installation: php-xml package
Purpose: ZIP file handling (imports/exports, backups)
Installation: php-zip package
Apache 2.4+ with mod_rewrite
ChurchCRM currently requires Apache's mod_rewrite module for URL routing. While we'd like to deprecate this requirement, it still exists. If you know mod_rewrite is loaded and working on your Apache setup, it is SAFE to ignore this prerequisite during setup.
nginx compatibility: nginx may work but is not officially supported or tested.
MySQL 5.7+ or MariaDB 10.2+
- MariaDB 10.2 or higher is recommended for better performance
- Database must support:
- UTF-8 character set
- InnoDB storage engine
- Foreign key constraints
The src/Include/Config.php file must be writable during setup
The Images/ directory must be writable for:
- Profile picture uploads
- Report generation
- Image cache storage
PHP must be able to write temporary files for:
- File uploads
- Session storage
- Cache operations
Regular expression support with Unicode handling (usually built-in to modern PHP)
System should support UTF-8 locales for proper text handling
- Minimum: 256MB
- Recommended: 512MB or higher
- Larger congregations may need 1GB+
Configuration: memory_limit in php.ini
- Minimum: 30 seconds
- Recommended: 60+ seconds for data imports
- Large reports may need higher values
Configuration: max_execution_time in php.ini
See PHP Max Execution Time for detailed tuning guidance.
Must be turned OFF (deprecated PHP feature)
Must be enabled and configured:
file_uploads = On-
upload_max_filesize- recommend 10MB+ -
post_max_size- should match or exceed upload_max_filesize
- Home
- Wiki → Docs links — User & admin manuals moved to docs.churchcrm.io
→ docs.churchcrm.io for installation & setup
- Installation ← Start here!
- First Run Setup
- Features Overview
→ docs.churchcrm.io for user manuals
- User Guide (docs)
- People Management — docs
- Groups & Events
- Tools
- Finances
→ docs.churchcrm.io for admin manuals
- User Management
- System Maintenance
- Configuration
- Troubleshooting
- Localization
Contributing to ChurchCRM
- Quick Start
- Testing & CI/CD
- Code & Architecture
- Localization
- Release & Security