A Roundcube 500 Internal Server Error on a Plesk server is one of those failures that looks catastrophic but is almost always caused by one of a handful of fixable configuration issues. When webmail goes down, your hosting customers can't access their email from a browser — support tickets spike, and every minute counts. This guide walks you through the exact diagnostic steps and fixes for the most common causes of Roundcube 500 errors on Plesk servers.
Understanding Why Roundcube Returns a 500 Error on Plesk
Roundcube is a PHP application that Plesk installs and manages separately from the core panel. A 500 error means PHP or the web server encountered an unhandled exception and couldn't return a proper page. On Plesk, the most frequent root causes are:
- Database driver mismatch — Roundcube's configuration specifies a database driver (PDO_MySQL, MySQLi) that isn't available in the PHP version Plesk is using for webmail
- PHP timezone not configured — missing or invalid
date.timezonein php.ini causes fatal errors in newer PHP versions - Roundcube database connection failure — the rcmail database user lost its password or privileges after a Plesk update
- Incompatible PHP version after Plesk upgrade — Plesk updates sometimes switch the webmail PHP version to one where Roundcube's extensions aren't loaded
- Corrupt or missing Roundcube session directory — PHP session writes fail and Roundcube can't start
💡 None of these worked? Skip the guesswork.
Get Expert Help →Step 1: Read the Error Logs Before Doing Anything Else
tail -n 50 /var/log/roundcube/errors.log
Or, on some Plesk installations:
tail -n 50 /usr/share/roundcube/logs/errors
The log almost always names the exact problem: a database connection error, a missing PHP extension, a timezone warning that escalated to a fatal, or a session write failure.
tail -n 50 /var/log/plesk/nginx/webmail.error.log
Or for Apache:
tail -n 50 /var/log/plesk/apache/webmail.error.log
PHP fatal errors are typically captured here when Roundcube's own log isn't writable.
grep -i "roundcube\|webmail\|fatal\|error" /var/log/php-errors.log | tail -20
plesk bin php_handler --list | grep webmail
Note the PHP version (e.g., 8.1, 8.2).
php -r "phpinfo();" | grep -i "pdo_mysql\|mysqli"
If the extension is missing, install it via Plesk's PHP settings:
plesk bin php_handler --set-webmail-handler --version=8.1
On CentOS/AlmaLinux/CloudLinux:
yum install php81-php-mysqlnd php81-php-pdo
On Debian/Ubuntu:
apt install php8.1-mysql
After installing, restart PHP-FPM:
systemctl restart plesk-php81-fpm
php --ini | grep "Loaded Configuration"
Or check the Plesk-managed php.ini path, typically at:
/opt/plesk/php/8.1/etc/php.ini
[Date]
date.timezone = "UTC"
Or replace UTC with the server's actual timezone (e.g., America/New_York, Asia/Kolkata). Verify the timezone string is valid:
php -r "echo date_default_timezone_get();"
systemctl restart plesk-php81-fpm
cat /etc/roundcubemail/config.inc.php | grep db_dsnw
Or on some Plesk versions:
cat /usr/share/roundcube/config/config.inc.php | grep db_dsnw
This shows the database user and password Roundcube uses. Note the username.
mysql -u root -p -e "SELECT user, host FROM mysql.user WHERE user LIKE '%roundcube%';"
Then check grants:
SHOW GRANTS FOR 'roundcube'@'localhost';
mysql -u root -p -e "ALTER USER 'roundcube'@'localhost' IDENTIFIED BY 'new_strong_password';"
Then update the password in config.inc.php to match.
Navigate to https://webmail.yourdomain.com/installer/ in a browser (you may need to temporarily enable the installer in config.inc.php by setting $config['enable_installer'] = true;). Run the database initialisation step to recreate missing tables.
ls -la /var/lib/php/sessions/
ls -la /tmp/roundcube-temp/
If these directories are owned by root and not writable by the webmail PHP user, sessions fail silently and return 500.
chown -R apache:apache /var/lib/php/sessions/ # CentOS/AlmaLinux
chown -R www-data:www-data /var/lib/php/sessions/ # Debian/Ubuntu
chmod 1733 /var/lib/php/sessions/
rm -rf /usr/share/roundcube/temp/*
rm -rf /usr/share/roundcube/cache/*
plesk repair mail -all
This re-checks webmail dependencies, resets file permissions, and verifies the database schema.
plesk installer --select-product-id plesk --select-release-current --upgrade-installed-components
This upgrades all Plesk components including Roundcube to the version tested with your Plesk release.
plesk installer --select-product-id plesk --select-release-current --install-component roundcube
Step 7: Verify Roundcube Is Working
curl -I https://webmail.yourdomain.com/
# Expected: HTTP/2 200
Then log in with a test mailbox and confirm the inbox loads, mail can be sent, and the interface doesn't show any PHP warnings.
Persistent Roundcube 500 errors across multiple domains on a shared Plesk server often point to a post-update PHP compatibility issue that affects all accounts simultaneously. CloudHouse Technologies' server management service monitors Plesk installations proactively, catches PHP and webmail compatibility issues before they cause customer-facing outages, and handles Plesk version upgrades safely.
