PHP, extensions, database, and web server expectations.
Minimum stack
| Component | Requirement |
|---|---|
| PHP | 8.2 or newer |
| Database | MySQL 8+ or compatible MariaDB |
| Composer | 2.x for dependencies and migrations |
| Web server | Apache, Nginx, or Caddy with rewrite to public/index.php |
Required PHP extensions
mbstring— Unicode text handlingpdo_mysql— Database accessjson— APIs and configurationcurl— Outbound HTTP (updates, Stripe, AI tools, blueprint media seed)gd— Image compression and responsive thumbnails in the media library
Recommended but optional
intl— Better locale formattingzip— Theme and plugin catalog installsopcache— Production performance
Web server configuration
Point the document root at public/ with public/index.php as the front controller. All non-file requests must route through index.php.
Local development
composer serve
Runs PHP's built-in server on port 8080. Suitable for development only—not for production traffic.
Environment variables
Copy .env.example to .env and configure:
DB_HOST,DB_NAME,DB_USER,DB_PASSPHPAUTH_SITE_KEY— 32+ characters in productionPHPAUTH_SITE_URL— Canonical site URL for emails and redirectsSTRUXA_DIST_CATALOG_URL— Optional custom plugin/theme catalog
Never commit .env to version control.
First-time database
- Create an empty MySQL database.
- Either open
/install.phpin a browser, or runcomposer migratefrom CLI. - Register the first admin user.
- Remove
public/install.phpon production sites after setup.
Disk and permissions
public/uploads/— Must be writable for media uploadsstorage/— Writable for caches, job queue, config packagesvendor/— Created bycomposer install
Troubleshooting
- Migration fails — Verify MySQL user has CREATE/ALTER privileges.
- Upload errors — Check
upload_max_filesizeandpost_max_sizein php.ini. - GD missing — Media compression is skipped; install
php-gdfor full media features.