Roundcube issue after upgrade

A bit of a story, and I know I did it all wrong.

The backstory is that I accidentally upgraded the Hestia server from Debian Bookworm to Trixie. I ran the apt update with -y and realized too late that I had updated. It apparently only partially completed the update, and that was months ago. Everything was fine up until recently, when I wanted to install something and realized not everything had updated, so I finished the update only to read the notes that Dovecot had a major rewrite. Of course it broke, and then I got Dovecot working and then found the upgrade instructions for Hestia; yes, I did it all wrong. Well, I did eventually get everything to work except one thing. Dovecot is fine, so is Exim, and all the websites. I cannot get Roundcube to work. First, I got the “User can’t use IP” error, but I figured that out. (For whatever reason, the Debian upgrade wiped out my interfaces file, so I had to redo all the networking) I can now disable and re-enable it in mail. Now, when I try to load it, I get “Unsupported PHP version. Required PHP >= 8.1,” but that doesn’t make sense. First, before the update, the core version was 8.2. I then set the core to 8.5 (but all but one website is set to 8.2; I have one on 7.4, but I cannot change that at the moment because it depends on 7.4). If I run the “v-add-sys-roundcube” command, I get “Error: Installed version (1.7.4) is equal to the available version (1.7.4).” Is there a procedure to reinstall Roundcube, or do you have a better recommendation? Could this be a simple setting in a file somewhere? Everything online just describes setting the core PHP version, but I already did that. Thanks

Show the output of these commands:

v-list-sys-php plain
v-list-default-php plain
php -v | head -n1

To reinstall Roundcube:

sed -i 's/1\.7\.4/1.7.3/' /var/lib/roundcube/program/include/iniset.php
v-add-sys-roundcube
Result -

v-list-sys-php plain
7.4
8.2
8.5
v-list-default-php plain
8.5
php -v | head -n1
PHP 8.5.11 (cli) (built: Sep 24 2026 14:40:52) (NTS)

Thanks!

sed -i 's/1\.7\.4/1.7.3/' /var/lib/roundcube/program/include/iniset.php
v-add-sys-roundcube
ERROR: installto.sh failed (Roundcube 1.7.3 -> 1.7.4)

So I guess there still is an issue. Where would this log be?

installto.sh is a script that belongs to roundcube and it doesn’t have a log. Are you using the latest version of Hestia (1.10.5)?

Yes, Hestia is at 1.10.5, and Debian is at 13.7

Is there an official way to remove Roundcube completely and then reinstall it? Or would that not be recommended?

There is no official way but if you want to remove it completely and install it again:

Note: Maybe you would like to make a backup before executing below commands:

mariadb -uroot -e "DROP DATABASE IF EXISTS roundcube; DROP USER IF EXISTS 'roundcube'@'localhost'; DROP USER IF EXISTS 'roundcube'@'%';"
rm -rf /etc/roundcube/
rm -rf /var/lib/roundcube/

Once done, reinstall Roundcube:

v-add-sys-roundcube

I wish I could say reinstalling it fixed the issue, but I can’t. I am still getting the PHP version error.

I’m stumped. I figured a reinstall would have fixed it.

Remove again roundcube with the previous commands and after that, show the output of this command:

bash -x /usr/local/hestia/bin/v-add-sys-roundcube 2>&1 | tail -n 50

Here you go, thanks! I checked, and it still gives me “Unsupported PHP version. Required PHP >= 8.1.” even on a remote computer outside my local network, so I know it’s not a local cache. Although I have 8.5 selected and it shows 8.5, is there any way to see which version is actually being executed? Even on the admin portal that is working, is there any way to confirm it’s actually using 8.5?

) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Table structure for table `system`

CREATE TABLE `system` (
 `name` varchar(64) NOT NULL,
 `value` mediumtext,
 PRIMARY KEY(`name`)
) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

SET FOREIGN_KEY_CHECKS=1;

INSERT INTO `system` (`name`, `value`) VALUES ('\''roundcube-version'\'', '\''2025092300'\'');'
+ '[' -f /usr/bin/mariadb ']'
+ mariadb --defaults-file=/usr/local/hestia/conf/.mysql.localhost
+ return_code=0
+ rm -f /tmp/tmp.oIZQrYsVGb
+ return 0
++ openssl rand -base64 30
++ tr -d /
++ cut -c1-24
+ rcDesKey=bZHCwKTLoxG0sPee+vgNXDQG
+ [[ -n bZHCwKTLoxG0sPee+vgNXDQG ]]
+ sed -i s/%des_key%/bZHCwKTLoxG0sPee+vgNXDQG/g /etc/roundcube/config.inc.php
++ hostname
+ sed -i s/localhost/www.kb9mfd.com/g /etc/roundcube/plugins/password/config.inc.php
+ [[ -f /usr/local/hestia/install/deb/logrotate/roundcube ]]
+ cp -f /usr/local/hestia/install/deb/logrotate/roundcube /etc/logrotate.d/
+ rm -rf /var/lib/roundcube/installer
+ rm -rf /var/lib/roundcube/roundcubemail-1.7.4-complete.tar.gz
+ rm -rf /var/lib/roundcube/roundcubemail-1.7.4
+ grep -q WEBMAIL_SYSTEM /usr/local/hestia/conf/hestia.conf
+ grep -qw roundcube
+ phpenmod mcrypt
+ [[ -f /var/lib/roundcube/program/include/iniset.php ]]
++ grep RCMAIL_VERSION /var/lib/roundcube/program/include/iniset.php
++ cut -d \' -f 4
+ installed_v=1.7.4
+ [[ 1.7.4 == \1\.\7\.\4 ]]
+ [[ -f /etc/roundcube/config.inc.php ]]
+ [[ no == \y\e\s ]]
+ /usr/local/hestia/bin/v-log-action system Info Plugins 'Roundcube enabled (Version: 1.7.4).'
+ log_event 0 ''
+ '[' -z '' ']'
++ date '+%F %T'
++ basename /usr/local/hestia/bin/v-add-sys-roundcube
+ LOG_TIME='2026-10-02 18:59:18 v-add-sys-roundcube'
+ '[' 0 -eq 0 ']'
+ echo '2026-10-02 18:59:18 v-add-sys-roundcube '
+ exit 0

After some digging, I did confirm that /run/php/www.sock is actually 8.5. So that’s not it. /etc/nginx/conf.d/phpmyadmin.inc specifies that as the fpm socket used.

Ok, as far as I see, v-add-sys-roundcube works but I suppose the problem here is that your Apache is using mpm prefork and mod php instead of mpm event so the version detected is the one using that mod php.

Before giving the commands to fix it, could you please show the outputs of these commands?

ls -l /etc/apache2/conf.d/
dpkg -l | grep libapache2-mod-php
apache2ctl -M | grep -iE 'mpm|php'

Here you go, thank you!

total 20
-rw-r--r-- 1 root root  542 Oct 10  2024 172.29.100.10.conf
-rw-r--r-- 1 root root  542 Sep 29 10:19 172.29.100.11.conf
drwxr-xr-x 2 root root 4096 Oct  2 11:32 domains
-rw-r--r-- 1 root root  150 Feb  4  2025 hestia-event.conf
-rw-r--r-- 1 root root  999 Jul 31 06:35 phpmyadmin.inc
ii  libapache2-mod-php7.4                 1:7.4.33-30+0~20260703.120+debian13~1.gbp1cce3b    amd64        server-side, HTML-embedded scripting language (Apache 2 module)
 mpm_prefork_module (shared)
 php7_module (shared)

Looks like that is it.

I also ran -

apache2ctl -M | grep mpm
 mpm_prefork_module (shared)

So, it’s using prefork instead of mpm event. Is there a recommended way to fix that for Hestia?

To clarify, one instance is OwnCloud Classic, which requires PHP 7.4. It may be using mod-php. I am looking into migrating it to OwnCloud oCIS, which doesn’t use PHP at all, but at the moment it does. I then assume something with the upgrade changed the apache/nginx behavior. I do have fpm set for 7.4 in Hestia for that instance

Right now all your sites are using PHP 7.4 due the prefork.

Edited to use php7 instead of php when disabling the module for Apache.

a2dismod php7
a2dismod mpm_prefork
a2enmod mpm_event
systemctl restart apache2

And Roundcube should work and your sites use the PHP version assigned in Hestia.

If that works, remove the module too, you don’t need it anymore.

apt remove libapache2-mod-php7.4

Yay! Thank you! That did it. I had to specify php7.4 for the first command, but it worked!

@sahsanu You are a very dangerous man! Great one! All the best!