Horde login problems after 10.9.0-Release_32 Update


Aug 13, 2003
I hope this will helps someone else having this problem:

We had problems logging into Horde after an overnight update to 10.9.0-Release_32 from 10.8.2-Release_119. Customers would get to the Horde login page (http://example.com:2095/horde/login.php) successfully, but the login would silently fail when they click the Log in button - the page would just reload with no error messages, PHP errors, etc.

After some digging and trying the usual tricks (/scripts/fix*, /scripts/upcp --force, etc.), I found that the new version of Horde either has new MySQL tables that were not created during the update, or the tables were deleted for some reason during the update.

The script to add the new tables is located in /usr/local/cpanel/base/horde/scripts/sql/create.mysql.sql. You can either modify the file (it is designed for a new install - it includes commands for creating the 'horde' user) and run it, or I've copied the commands I had to run in MySQL below.

(The easiest way to run these commands is to log into phpMyAdmin from WHM, select the 'horde' database, click on the SQL tab, and enter the commands into the text field. I ran them in chunks, but you may be able to run the whole thing at once.)

CREATE TABLE horde_users (
    user_uid                    VARCHAR(255) NOT NULL,
    user_pass                   VARCHAR(255) NOT NULL,
    user_soft_expiration_date   INT,
    user_hard_expiration_date   INT,

    PRIMARY KEY (user_uid)

GRANT SELECT, INSERT, UPDATE, DELETE ON horde_users TO horde@localhost;

CREATE TABLE horde_prefs (
    pref_uid        VARCHAR(200) NOT NULL,
    pref_scope      VARCHAR(16) NOT NULL DEFAULT '',
    pref_name       VARCHAR(32) NOT NULL,
    pref_value      LONGTEXT NULL,

    PRIMARY KEY (pref_uid, pref_scope, pref_name)

CREATE INDEX pref_uid_idx ON horde_prefs (pref_uid);
CREATE INDEX pref_scope_idx ON horde_prefs (pref_scope);
GRANT SELECT, INSERT, UPDATE, DELETE ON horde_prefs TO horde@localhost;

CREATE TABLE horde_datatree (
       datatree_id INT NOT NULL,
       group_uid VARCHAR(255) NOT NULL,
       user_uid VARCHAR(255) NOT NULL,
       datatree_name VARCHAR(255) NOT NULL,
       datatree_parents VARCHAR(255) NOT NULL,
       datatree_order INT,
       datatree_data TEXT,
       datatree_serialized SMALLINT DEFAULT 0 NOT NULL,

       PRIMARY KEY (datatree_id)

CREATE INDEX datatree_datatree_name_idx ON horde_datatree (datatree_name);
CREATE INDEX datatree_group_idx ON horde_datatree (group_uid);
CREATE INDEX datatree_user_idx ON horde_datatree (user_uid);
CREATE INDEX datatree_serialized_idx ON horde_datatree (datatree_serialized);

CREATE TABLE horde_datatree_attributes (
    datatree_id INT NOT NULL,
    attribute_name VARCHAR(255) NOT NULL,
    attribute_key VARCHAR(255) DEFAULT '' NOT NULL,
    attribute_value TEXT

CREATE INDEX datatree_attribute_idx ON horde_datatree_attributes (datatree_id);
CREATE INDEX datatree_attribute_name_idx ON horde_datatree_attributes (attribute_name);
CREATE INDEX datatree_attribute_key_idx ON horde_datatree_attributes (attribute_key);

GRANT SELECT, INSERT, UPDATE, DELETE ON horde_datatree TO horde@localhost;
GRANT SELECT, INSERT, UPDATE, DELETE ON horde_datatree_attributes TO horde@localhost;

CREATE TABLE horde_tokens (
    token_address    VARCHAR(100) NOT NULL,
    token_id         VARCHAR(32) NOT NULL,
    token_timestamp  BIGINT NOT NULL,

    PRIMARY KEY (token_address, token_id)

GRANT SELECT, INSERT, UPDATE, DELETE ON horde_tokens TO horde@localhost;

CREATE TABLE horde_vfs (
    vfs_id        BIGINT NOT NULL,
    vfs_type      SMALLINT NOT NULL,
    vfs_path      VARCHAR(255) NOT NULL,
    vfs_name      VARCHAR(255) NOT NULL,
    vfs_modified  BIGINT NOT NULL,
    vfs_owner     VARCHAR(255) NOT NULL,
    vfs_data      LONGBLOB,

    PRIMARY KEY (vfs_id)

CREATE INDEX vfs_path_idx ON horde_vfs (vfs_path);
CREATE INDEX vfs_name_idx ON horde_vfs (vfs_name);

GRANT SELECT, INSERT, UPDATE, DELETE ON horde_vfs TO horde@localhost;

CREATE TABLE horde_histories (
    history_id       BIGINT NOT NULL,
    object_uid       VARCHAR(255) NOT NULL,
    history_action   VARCHAR(32) NOT NULL,
    history_ts       BIGINT NOT NULL,
    history_desc     TEXT,
    history_who      VARCHAR(255),
    history_extra    TEXT,

    PRIMARY KEY (history_id)

CREATE TABLE horde_histories_seq (
    id           int(10) unsigned NOT NULL auto_increment,
    PRIMARY KEY  (id)

CREATE TABLE horde_datatree_seq (
    id           int(10) unsigned NOT NULL auto_increment,
    PRIMARY KEY  (id)

CREATE INDEX history_action_idx ON horde_histories (history_action);
CREATE INDEX history_ts_idx ON horde_histories (history_ts);
CREATE INDEX history_uid_idx ON horde_histories (object_uid);

GRANT SELECT, INSERT, UPDATE, DELETE ON horde_histories TO horde@localhost;
GRANT SELECT, INSERT, UPDATE, DELETE ON horde_histories_seq TO horde@localhost;
GRANT SELECT, INSERT, UPDATE, DELETE ON horde_datatree_seq TO horde@localhost;

CREATE TABLE horde_sessionhandler (
    session_id             VARCHAR(32) NOT NULL,
    session_lastmodified   INT NOT NULL,
    session_data           LONGBLOB,

    PRIMARY KEY (session_id)
) ENGINE = InnoDB;

GRANT SELECT, INSERT, UPDATE, DELETE ON horde_sessionhandler TO horde@localhost;



May 17, 2005

You Rock!
I, and all my annoying freinds and family I host for free that turn into bitchy complainers at the first sign of trouble, Thank You. Well, I thank you. They would probably grumble about how long it took.

Seriously thanks for taking the time to help those of us 'learning but still clueless' types.



Apr 28, 2004
thank you!!!

Thank you thank you thank you!!!
This post help me a lot!
I would like to add than I had to drop the horde databases first because wasn't taking the changes, then I created horde database again and added the code in the SQL tab. Everything is working now!
Thanks a lot!


Well-Known Member
Apr 11, 2003
THANK YOU! Dropping all the tables and running all the SQL code you posted above fixed my problem as well!


Nov 3, 2006

I too dropped all the horde tables and ran your SQL

Seems to be sort of working now - certainly more than it was before thats for sure