# System Requirements

> Complete server requirements and PHP extensions for WPsigner.

edition: both
Edition: Lite + Pro
AI note: This page applies to Lite and Pro. Call out Lite limits (PDF only, max 2 signers, email OTP, local timestamp) when they apply. Do not invent Pro-only features.
HTML: https://docs.wpsigner.com/getting-started/requirements/
Markdown: https://docs.wpsigner.com/md/getting-started/requirements.md
Source file: getting-started/requirements.md

---

Before installing WPsigner, ensure your server meets these requirements for optimal performance and full feature support.

## Minimum Requirements

| Component | Minimum | Recommended |
|-----------|---------|-------------|
| **WordPress** | 5.8+ | 6.4+ |
| **PHP** | 7.4+ | 8.1+ |
| **MySQL** | 5.7+ | 8.0+ |
| **MariaDB** | 10.3+ | 10.6+ |
| **Memory Limit** | 128MB | 256MB+ |
| **Max Upload Size** | 10MB | 64MB+ |
| **Max Execution Time** | 30s | 120s+ |

---

## Required PHP Extensions

These extensions are essential for WPsigner to function properly:

| Extension | Purpose | Check Command |
|-----------|---------|---------------|
| **openssl** | Digital signatures, PDF sealing, certificate management | `php -m \| grep openssl` |
| **gd** OR **imagick** | Image processing, signature rendering | `php -m \| grep -E "gd\|imagick"` |
| **mbstring** | Multi-byte string handling for international characters | `php -m \| grep mbstring` |
| **curl** | Webhook delivery, external API calls | `php -m \| grep curl` |
| **json** | API responses, data storage | `php -m \| grep json` |
| **zip** | Document packaging and export | `php -m \| grep zip` |

### Optional But Recommended

| Extension | Purpose |
|-----------|---------|
| **intl** | Better date/time formatting for international users |
| **exif** | Image orientation handling for uploaded signatures |
| **fileinfo** | MIME type detection for secure file uploads |

---

## Server Configuration

### PHP Settings (php.ini)

For optimal performance with large documents, adjust these settings:

```ini
; Recommended PHP settings for WPsigner
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
max_input_vars = 3000
```

### OpenSSL Requirements

WPsigner uses OpenSSL for:
- Digital certificate generation (self-signed)
- PDF digital signatures
- Secure webhook signatures (HMAC-SHA256)

**Minimum OpenSSL Version**: 1.0.2  
**Recommended**: 1.1.1 or higher

To check your OpenSSL version:
```bash
openssl version
```

### File Permissions

WPsigner needs write access to these directories:

| Directory | Permission | Purpose |
|-----------|------------|---------|
| `wp-content/uploads/` | 755 | Document storage |
| `wp-content/wpsigner-secure/` | 750 | Signed PDFs, certificates |

---

## WordPress Configuration

### Recommended Settings

| Setting | Recommended Value | Why |
|---------|-------------------|-----|
| **Permalinks** | Post name (`/%postname%/`) | Required for signing URLs |
| **WP Cron** | Enabled | Auto-reminders, webhook delivery |
| **SSL Certificate** | Required | Secure signing experience |

### HTTPS Requirement

> **important**
WPsigner requires HTTPS for production use. All signing URLs must be served over SSL to protect signing sessions and data in transit.

---

## Hosting Compatibility

WPsigner runs on standard WordPress hosting — including small shared-hosting sites — when the requirements above are met.

For recommended providers, shared hosting tips, WAF notes, and a go-live checklist, see **[Hosting Compatibility](/getting-started/hosting-compatibility/)**.

---

## Checking Your Server

### Quick Compatibility Check

After installing WordPress, you can check your server's compatibility:

1. Go to **Tools → Site Health**
2. Click **Info** tab
3. Expand **Server** section
4. Verify PHP version, extensions, and limits

### Manual PHP Info Check

Create a temporary file `phpinfo.php` in your WordPress root:

```php
<?php phpinfo(); ?>
```

Visit `yourdomain.com/phpinfo.php` to view all PHP settings.

> **caution**
Delete this file immediately after checking. It exposes sensitive server information.

---

## Troubleshooting Common Issues

### "OpenSSL extension not found"

Contact your hosting provider to enable OpenSSL, or for VPS:
```bash
sudo apt-get install php-openssl
sudo systemctl restart apache2
```

### "Memory limit exhausted"

Add to `wp-config.php`:
```php
define('WP_MEMORY_LIMIT', '256M');
```

### "Upload file size too large"

For Apache, add to `.htaccess`:
```apache
php_value upload_max_filesize 64M
php_value post_max_size 64M
```

For Nginx, add to server block:
```nginx
client_max_body_size 64M;
```

---

## Next Steps

Once your server meets all requirements:

1. **[Hosting Compatibility](/getting-started/hosting-compatibility/)** - Confirm your host is a good fit
2. **[Download WPsigner](https://wpsigner.com/download/)** - Get the latest version
3. **[Installation Guide](/getting-started/installation/)** - Step-by-step setup
4. **[Quick Start](/getting-started/quick-start/)** - Create your first document
