Skip to content

XOOPS Server Requirements

This document specifies all server requirements needed to run XOOPS successfully.

Version-Specific Requirements

XOOPS Version Status PHP Minimum PHP Recommended MySQL/MariaDB
2.5.11 Stable 7.4.0 8.2 5.7+ / 10.3+
2.5.12 Beta 7.4.4 8.2 5.7+ / 10.4+
2026 Target 8.2 8.3 8.0+ / 10.6+

Note: PHP 8.x compatibility was fully implemented in XOOPS 2.5.11. Earlier versions may have issues with PHP 8.

PHP Requirements

Minimum Version

PHP Extensions (Required)

The following PHP extensions must be installed and enabled:

Extension Purpose Enabled By Default
PDO Database abstraction Yes
MySQL/MySQLi MySQL connectivity Yes
GD Image manipulation Usually Yes
JSON JSON encoding/decoding Yes
Session Session management Yes
PCRE Regular expressions Yes
Reflection Class/method inspection Yes
SPL Standard PHP library Yes

These extensions enhance XOOPS functionality:

Extension Purpose Impact
cURL Remote HTTP requests Highly recommended
OpenSSL SSL/TLS support Required for HTTPS
Zip ZIP file handling For module installation
XML XML parsing Some modules use XML
mbstring Multi-byte string support Better Unicode handling
Opcache PHP code caching Significant performance boost
APCu User data caching Performance optimization

PHP Configuration Settings

Recommended php.ini settings for XOOPS:

; Memory and Execution
memory_limit = 128M              ; Minimum 128MB, 256MB+ recommended
max_execution_time = 300         ; 5 minutes for installations/upgrades
max_input_time = 300             ; 5 minutes

; File Upload
upload_max_filesize = 128M       ; Maximum upload file size
post_max_size = 128M             ; Maximum POST size
max_file_uploads = 20            ; Maximum files per request

; Sessions
session.save_path = "/tmp"       ; Ensure directory exists and is writable
session.gc_maxlifetime = 3600    ; Session timeout in seconds

; Security
display_errors = Off             ; Don't display errors in production
log_errors = On                  ; Log errors to file
error_log = "/var/log/php_errors.log"  ; Error log location

; Performance
default_charset = "UTF-8"        ; UTF-8 encoding
short_open_tag = Off             ; Avoid short PHP tags

; Extensions
extension = php_mysql.so         ; Or php_mysqli.so
extension = php_gd2.so           ; Or php_gd.so
extension = php_curl.so
extension = php_openssl.so

Verify PHP Configuration

Check current PHP settings:

# View PHP version
php -v

# View installed extensions
php -m

# View specific php.ini setting
php -r "echo ini_get('memory_limit');"

# Create phpinfo() script
echo '<?php phpinfo(); ?>' > /var/www/html/info.php
# Visit http://your-domain.com/info.php in browser

Database Requirements

MySQL/MariaDB Version

Database Minimum Version Recommended
MySQL 5.0.0 5.7+
MariaDB 5.5.0 10.2+
Percona 5.5.0 5.7+

Database Configuration

-- Required settings
SET GLOBAL character_set_server = utf8mb4;
SET GLOBAL collation_server = utf8mb4_unicode_ci;

-- For better performance (optional)
SET GLOBAL max_connections = 200;
SET GLOBAL max_allowed_packet = 256M;
SET GLOBAL query_cache_size = 64M;
SET GLOBAL query_cache_type = 1;

Database User Privileges

Required privileges for XOOPS database user:

-- Create database user
CREATE USER 'xoops_user'@'localhost' IDENTIFIED BY 'password';

-- Grant required privileges
GRANT CREATE, SELECT, INSERT, UPDATE, DELETE,
      DROP, CREATE TEMPORARY TABLES,
      LOCK TABLES, ALTER
ON xoops_db.* TO 'xoops_user'@'localhost';

FLUSH PRIVILEGES;

Connection Methods

Method Recommended Notes
Local (localhost) Yes Fastest, most secure
TCP/IP (127.0.0.1) Yes Alternative to localhost
Remote Host Conditional Only with SSL encryption
Socket (/tmp/mysql.sock) Yes Slightly faster than TCP

Database Tables

XOOPS creates approximately 40-50 tables depending on installed modules.

Storage recommendations: - Minimum: 50MB - Recommended: 500MB - Large sites: 1GB+

Check database size:

-- View total database size
SELECT
    table_schema,
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS size_mb
FROM information_schema.tables
WHERE table_schema = 'xoops_db'
GROUP BY table_schema;

Web Server Requirements

Module Required Recommended
mod_rewrite Yes For clean URLs
mod_dir Yes Directory handling
mod_mime Yes MIME type mapping
mod_autoindex No Directory listings
mod_ssl Yes HTTPS support
mod_expires No Cache control
mod_deflate No Gzip compression

Apache Configuration

Create virtual host configuration:

<VirtualHost *:80>
    ServerName your-domain.com
    ServerAlias www.your-domain.com
    DocumentRoot /var/www/html/xoops

    <Directory /var/www/html/xoops>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted

        # Enable mod_rewrite for clean URLs
        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteBase /
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule ^(.*)$ index.php?$1 [L,QSA]
        </IfModule>
    </Directory>

    # Restrict access to sensitive directories
    <Directory /var/www/html/xoops/install>
        Deny from all
    </Directory>

    # Compression
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
    </IfModule>

    ErrorLog ${APACHE_LOG_DIR}/xoops_error.log
    CustomLog ${APACHE_LOG_DIR}/xoops_access.log combined
</VirtualHost>

Enable modules:

# Enable required modules
a2enmod rewrite
a2enmod ssl
a2enmod headers
a2enmod expires
a2enmod deflate

# Enable site
a2ensite xoops

# Restart Apache
systemctl restart apache2

Nginx

Module Recommended Purpose
gzip Yes Compression
ssl Yes HTTPS support
rewrite Yes URL rewriting
headers Yes Custom headers
cache Optional Caching

Nginx Configuration

server {
    listen 80;
    listen [::]:80;

    server_name your-domain.com www.your-domain.com;
    root /var/www/html/xoops;
    index index.php index.html;

    # Logging
    access_log /var/log/nginx/xoops_access.log;
    error_log /var/log/nginx/xoops_error.log;

    # Gzip compression
    gzip on;
    gzip_types text/html text/plain text/css text/javascript application/javascript;

    # Security headers
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;

    # Deny access to sensitive directories
    location ~ ^/(install|docs|samples)/ {
        deny all;
    }

    # PHP-FPM backend
    location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "upload_max_filesize=128M post_max_size=128M";
    }

    # Static files - enable browser caching
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    # URL rewriting for clean URLs
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # Deny access to dotfiles
    location ~ /\. {
        deny all;
    }
}

Other Web Servers

Server Supported Notes
Apache Yes Most common, fully supported
Nginx Yes High performance, growing use
LiteSpeed Yes Requires compatible hosting
IIS (Windows) Limited Community support only

File System Requirements

Directory Structure

xoops/
├── admin/              (Web accessible)
├── bin/                (PHP CLI scripts)
├── cache/              (Writable - 777)
├── class/              (Writable for module installations)
├── configs/            (Contains mainfile.php)
├── docs/               (Readable only)
├── extra/              (Optional utilities)
├── formats/            (Optional)
├── htdocs/             (Web accessible)
├── include/            (PHP includes)
├── install/            (Remove after installation)
├── kernel/             (Core classes)
├── modules/            (Extensible modules)
├── templates/          (Core templates)
├── templates_c/        (Writable - 777)
├── uploads/            (Writable - 777)
├── var/                (Writable - 777, variable data)
├── index.php           (Entry point)
├── mainfile.php        (Critical config)
└── .htaccess           (Rewrite rules)

Permission Requirements Table

Path Owner Permissions Reason
mainfile.php www-data 644 Configuration (readable, not writable)
cache/ www-data 777 Cache files writable by web server
templates_c/ www-data 777 Compiled templates writable
uploads/ www-data 777 User uploads writable
var/ www-data 777 Variable data writable
modules/ root 755 Modules readable by all
modules/*/ www-data 755 Module dirs (some may need write)
*.php files root 644 PHP files readable, not writable
*.php dirs root 755 PHP dirs readable and traversable

Set permissions script:

#!/bin/bash
XOOPS_PATH="/var/www/html/xoops"
WEB_USER="www-data"
WEB_GROUP="www-data"

# Set ownership
chown -R $WEB_USER:$WEB_GROUP $XOOPS_PATH

# Set directory permissions
find $XOOPS_PATH -type d -exec chmod 755 {} \;

# Set file permissions
find $XOOPS_PATH -type f -exec chmod 644 {} \;

# Make specific directories writable
chmod 777 $XOOPS_PATH/cache
chmod 777 $XOOPS_PATH/templates_c
chmod 777 $XOOPS_PATH/uploads
chmod 777 $XOOPS_PATH/var

# Make mainfile.php less accessible
chmod 644 $XOOPS_PATH/mainfile.php

echo "Permissions set successfully"

Disk Space Requirements

Component Space
XOOPS Core ~20MB
Default Modules ~30MB
Database 50MB minimum
User Uploads Variable (100MB-1GB+)
Backups 2-3x database size
Logs 10-50MB (monitor)
Recommended Total 500MB minimum

Server Environment

Hosting Type

Type Suitable Notes
Shared Hosting Yes Verify PHP and MySQL versions
VPS Yes (Recommended) Better control, scalability
Dedicated Server Yes Full control, best performance
Cloud (AWS, Azure, DigitalOcean) Yes Flexible, pay-as-you-go

Memory Requirements

Type Minimum Recommended
System RAM 512MB 2GB+
PHP memory_limit 128MB 256MB+
MySQL buffer_pool_size 128MB 1GB+

Network Requirements

Requirement Details
Bandwidth 100 Mbps+ recommended
Ports Open 80 (HTTP), 443 (HTTPS)
Email Support SMTP for sending notifications
DNS Standard DNS setup

System Requirements Checker

Use this PHP script to check server compatibility:

<?php
$required = [
    'PHP Version' => version_compare(PHP_VERSION, '5.6.0') >= 0,
    'PHP-MySQL' => extension_loaded('mysqli') || extension_loaded('mysql'),
    'PHP-GD' => extension_loaded('gd'),
    'PHP-cURL' => extension_loaded('curl'),
    'PHP-OpenSSL' => extension_loaded('openssl'),
    'PHP-JSON' => extension_loaded('json'),
];

echo "<h2>XOOPS Server Requirements Check</h2>";
echo "<table border='1'>";
echo "<tr><th>Requirement</th><th>Status</th></tr>";

foreach ($required as $name => $status) {
    $status_text = $status ? '<span style="color:green;">OK</span>' : '<span style="color:red;">MISSING</span>';
    echo "<tr><td>$name</td><td>$status_text</td></tr>";
}

echo "</table>";

// Check php.ini settings
echo "<h3>PHP Configuration</h3>";
echo "<p>memory_limit: " . ini_get('memory_limit') . "</p>";
echo "<p>upload_max_filesize: " . ini_get('upload_max_filesize') . "</p>";
echo "<p>max_execution_time: " . ini_get('max_execution_time') . " seconds</p>";
?>

Compliance Checklist

Before installing XOOPS, ensure:

  • PHP version 5.6.0 or higher installed
  • MySQL/MariaDB 5.0 or higher installed
  • PDO and MySQL extensions enabled
  • GD library extension enabled
  • cURL extension installed (recommended)
  • OpenSSL extension enabled
  • Web server (Apache/Nginx) configured
  • Mod_rewrite or URL rewriting enabled
  • SSL/HTTPS certificate installed
  • Write permissions available for cache, templates_c, uploads, var
  • Minimum 500MB disk space available
  • 128MB+ PHP memory_limit set
  • Sendmail or SMTP configured for email
  • DNS properly configured
  • Domain name registered and pointing to server

Next Steps

  1. Verify all requirements are met
  2. Proceed with XOOPS Installation
  3. Configure Basic Settings after installation
  4. Review Security Settings

Tags: #server-requirements #installation #hosting #configuration

Related Articles: - Installation - Security-Configuration - Performance-Optimization