6.0.0-git
2024-03-28
Last Modified 2005-12-13 by Jan Schneider

Horde Administrator's FAQ

Troubleshooting and Common Problems

Table of Contents

  1. Horde Administrator's FAQ
    1. Troubleshooting and Common Problems
      1. Common error messages
        1. "Call to undefined function: _( )"
        2. "Call to unsupported function page_open"
        3. "Cannot extend nonexistent class HordeDefaults"
        4. "Cannot instantiate non-existent class: hordect"
        5. "Database error (HordeDB): Session: freeze() failed"
        6. "Document contains no data"
        7. "Failed opening test.php3 for inclusion"
        8. "Fatal error: Allowed memory size of ### bytes exhausted..."
        9. "Fatal error: Call to undefined function: iswarning() in ..."
        10. "Fatal error: Call to undefined function: quote()"
        11. "Fatal error: Undefined class name 'log' in ..."
        12. "imap_utf7_decode: Unexpected end of string"
        13. "Only variable references should be returned by reference"
        14. "Only variables can be passed by reference"
        15. "output handler 'ob_gzhandler' cannot be used twice in..."
        16. "PostgreSQL Error: attribute 'val' not found"
        17. "top.opener.parent is not an object"
        18. "Unable to load dynamic library php_whatever.dll - The specified module could not be found."
        19. "Unable to open VFS file for writing"
        20. "undefined function: bindtextdomain()"
        21. "undefined function: imap_open"
        22. "undefined function: imap_utf7_encode()"
        23. "undefined function: mysql_pconnect()"
        24. "Warning: errflg=2, text=Can't get status of mailbox"
        25. "Warning: Unable to open '/tmp/...'" when attaching
        26. "Warning: Undefined index: Send Message"
        27. "Warning: Undefined property: _iv in..."
        28. "Warning: Undefined variable: sid in .../session.inc"
        29. "Wrong parameter count for imap_delete"
      2. Verifying Components
        1. How can I tell if my Web server works?
        2. How can I tell if PHP works?
        3. How can I tell if Horde and PHPlib work?
        4. How can I tell if my IMAP server works?
        5. How can I tell if my database works?
      3. Troubleshooting IMP
      4. Troubleshooting Turba
      5. Troubleshooting Trean
        1. Can't save bookmarks or categories.
      6. Troubleshooting Chora
        1. Why do I get a 404, Object not found error when clicking on any cvsroot subdirectories?

Common error messages

"Call to undefined function: _( )"

[Horde 2.0]: This error occurs when PHP is not compiled with gettext support. As of version Horde 2.0, PHP needs to be compiled with gettext support. Rebuild PHP with the --with-gettext option to configure, or if using RPM's install the php-gettext RPM. (_() is a synonym for gettext() in PHP.)

"Call to unsupported function page_open"

[Horde 1.2]: This error occurs when PHPlib is missing from the PHP include path. Make sure you have followed the instructions in the README file in your PHPlib directory.

"Cannot extend nonexistent class HordeDefaults"

This error is often the result of using incompatible versions of Horde and IMP. The appropriate Horde version to use with a given version of IMP is that with a version number one less than IMP's; for instance, IMP 2.2-pre13 used Horde 1.2-pre13, and IMP 3.0 uses Horde 2.0.

Information on choosing the appropriate IMP version for your site can be found in Section 3.2.1

"Cannot instantiate non-existent class: hordect"

[IMP 2.2]: This error is caused by an incorrect PHPlib configuration. Make sure that the appropriate section for your chosen storage class is fully uncommented in the local.inc file in your PHPlib directory. Frequently, during configuration, the HordeCT part of the PHPlib configuration (located below the HordeDB section for your storage class) is accidentally left commented out.

"Database error (HordeDB): Session: freeze() failed"

[IMP 2.2]: Occasionally, the following message will be produced upon login or logout:


Database error (HordeDB): Invalid SQL: INSERT INTO active_sessions 

VALUES ('562493df1fa64bc81db7b0deb86fc019','HordeSession',

'70ee728055533b7ad9fc0bacfb8ecde01718b97968eb65bc79b418d12c0dc0e9')

Database error (HordeDB): Session: freeze() failed.

This is produced by a race condition in PHPlib. When two pages try to update the session table at once, the update can sporadically fail. This is more likely to happen at logout from IMP (due to the multiple framesets) than in other use. Charles Wright came up with a patch against PHPlib which should fix this for MySQL users.

Kari Asikainen reports that using PostgreSQL in place of MySQL, or downgrading from PHP 4.0.2 to 4.0.1pl2, eliminates the condition as well.

"Document contains no data"

The Netscape error message, "Document contains no data", only tells you that nothing was sent from the web server to the browser. In other words, something went quite wrong, yet you've no idea what.

In order to get an idea of what really happened, take a look in the web server's error log, in which more verbose errors should be found. There is a good chance that the error is caused by omitting IMAP support from PHP; you can check whether that is the case by examining your server configuration with a PHP script such as the following:


<?php phpinfo(); ?>

Don't confuse PHP's IMAP support with Apache's mod_imap, which refers to image maps.

"Failed opening test.php3 for inclusion"

[Horde 1.2]: The IMP setup script changes the permissions on the test.php3 script so that it can't be run. This increases the security of your web server by not revealing to intruders information about how PHP is compiled/configured. To use the script while setting up Horde, PHPLIB, or IMP, add read permission for all users to the script:


chmod a+r horde/test.php3

Remember to remove read permission (chmod a-r) from the file when you have finished testing.

"Fatal error: Allowed memory size of ### bytes exhausted..."

Either recompile PHP without the --enable-memory-limit option, or increase the value of memory_limit in your php.ini file.

"Fatal error: Call to undefined function: iswarning() in ..."

[Horde 2.x]: After the release of Horde 2.1, the isWarning() function was removed from PEAR, resulting in this error when using a PHP/PEAR released after Horde 2.1 was released. Possible solutions are:

  • Upgrade to a newer Horde (e.g. 2.2 or newer)
    • Remove all references to PEAR::isWarning() from the code manually.
    • Downgrade to an older PHP/PEAR version.

The same problem exists in some other Horde applications also (e.g. in Kronolith 1.0). The solution is the same (e.g. upgrade to a newer Kronolith version, remove the isWarning() calls, downgrade PEAR).

"Fatal error: Call to undefined function: quote()"

[Horde 2.x]: You are using too old a version of PHP which doesn't support some needed functions such as the quote() function. Upgrade to a supported version of PHP.

"Fatal error: Undefined class name 'log' in ..."

[Horde 2.x]: Your PHP PEAR implementation is missing the PEAR Log package. This is a common problem with the PHP 4.2.1 PEAR for example. You can install it via the network if you have a standalone php/pear command. See the file horde/docs/INSTALL for more information on how to install the required PEAR packages this way. Otherwise you can download the Log package (e.g. from http://pear.php.net/get/Log) and manually install them inside your PEAR directory. You may also need to install the modules Mail_Mime and Net_Socket as well.

For more detailed instructions on installing PEAR modules, see the PEAR documentation at http://pear.php.net/manual/.

"imap_utf7_decode: Unexpected end of string"

This error is another symptom of the ampersand question described in the section above.

"Only variable references should be returned by reference"

"Only variables can be passed by reference"

These messages appear after upgrading to PHP 4.4 or PHP 5.1. These PHP versions raise notices about reference usage that older version accepted happily. Only Horde 3.x and the H3 application versions will be fixed to not cause this messages, so either upgrade to the latest versions, or set your error reporting level in PHP to exclude E_NOTICE level messages.

E.g. in php.ini:


error_reporting = E_ALL & ~E_NOTICE

You can also turn off the display of error reporting entirely, although this might cause problems diagnosing problems in the future. After you get a good, working installation you can turn off the display of error messages to the browser and just log them.

E.g. in php.ini:


display_errors = Off

log_errors = On

error_log = syslog ; goes to NT event log on NT-based machines

; error_log = /var/log/php_error

"output handler 'ob_gzhandler' cannot be used twice in..."

[Horde 2.x]: You enabled output compression in both your php.ini configuration file and in your horde configuration file (either horde/config/horde.php or horde/config/conf.php). Disable it in one of these two locations.

"PostgreSQL Error: attribute 'val' not found"

If IMP produces an error similar to


Warning: PostgresSQL query failed: ERROR: attribute 'val' not found in

db_pgsql.inc on line 52

Database error: Invalid SQL: SELECT val FROM active_sessions WHERE sid

= '2009f5dd0a3579a38eb0dfb7b9bd2c6f' AND name = 'HordeSession'

PostgreSQL Error: 1 (ERROR: attribute 'val' not found )

Session halted.

the usual cause is not a missing attribute nor invalid SQL, but a failure to successfully authenticate with the database. Check your PostgreSQL logs for authentication errors, and make sure you can log in to the database manually using psql with the Horde username and password.

"top.opener.parent is not an object"

This error is the result of a bug in Internet Explorer. Stuart suggests that the following commands (executed on the Windows system on which Internet Explorer is installed) will solve the problem:


regsvr32 c:\windows\system32\actxprxy.dll

regsvr32 c:\windows\system32\shdocvw.dll

The FAQ maintainer has not tested the above! Make sure you have a backup of your system before playing with deep Windows magic.

"Unable to load dynamic library php_whatever.dll - The specified module could not be found."

This error message is a misrepresentation of the actual problem. Often occurs when some dependency needed for php_whatever.dll is missing.e.g. need to copy iconv.dll (from the dlls folder under to the php install directory) to windows\system32 to get php_gettext.dll to load.

"Unable to open VFS file for writing"

If you see this message from kronolith or trean (or any other application hat uses crontabs) you are running a crontab script as a different user as you did in the first run. Adjust your crontab (running it as same user as the webserver is a good idea) and also change the ownship of <your_vfs_root>/.horde.

"undefined function: bindtextdomain()"

This error occurs when PHP is not compiled with gettext support. As of Horde 2.0, PHP needs to be compiled with gettext support. Rebuild PHP with the --with-gettext option to configure, or if using RPM's install the php-gettext RPM.

"undefined function: imap_open"

This error is the result of using IMP without compiling IMAP support into PHP. Be sure that your PHP installation supports IMAP, and rebuild it with the --with-imap flag to configure if it does not (or install the php-imap RPM in an RPM installation).

"undefined function: imap_utf7_encode()"

This error most often occurs when IMP tries to use a folder name with an ampersand (&) in it. The easiest solution is to rename the folder to something without an ampersand in it (on the server, or with a different IMAP client).

The error can also occur if IMAP support has not been compiled into PHP. Ensure that your PHP installation supports IMAP.

"undefined function: mysql_pconnect()"

This error occurs when IMP is configured to use MySQL, but PHP was not built with support for MySQL. Rebuild PHP, ensuring that MySQL support is compiled in, and that the line


extension = mysql.so

appears in your php.ini (or php3.ini in PHP version 3).

"Warning: errflg=2, text=Can't get status of mailbox"

This error usually results from a bug in PHP version 3.0.17. Use version 3.0.18 instead, or upgrade to PHP4.

"Warning: Unable to open '/tmp/...'" when attaching

On some systems (commonly Solaris and FreeBSD), the upload_tmp_dir setting in php.ini (PHP 4.x) or php3.ini (PHP 3.x) must be set to /var/tmp.

"Warning: Undefined index: Send Message"

This error occurs on Red Hat 7 systems, and results from a bug in Red Hat's php-4.0.4pl1-3 RPM. Update your PHP to the latest available from Red Hat.

"Warning: Undefined property: _iv in..."

[Horde 2.2]: This is a bug in Horde 2.2 when used without php mcrypt support. Either upgrade to Horde 2.2.1, or install the mcrypt php extension.

"Warning: Undefined variable: sid in .../session.inc"

[Horde 1.2]: Horde ships with its own customized (read: fixed) version of PHPLIB (the horde/phplib directory). You must use that version of PHPLIB; it is the only version that is supported, and most of the other versions of PHPLIB will not work.

This particular error is a sign that Horde is finding a version of PHPLIB other than the one that ships with it. Make sure that session.inc has version 1.1.2.x in the Id tag at the top. Also make sure that your PHP include_path and auto_prepend_file are set properly so that Horde is finding the correct instance of PHPLIB.

"Wrong parameter count for imap_delete"

This error is caused by a bug in older versions of PHP. Upgrade to the current version of PHP, or if you must stay with PHP3, use version 3.0.18.

Verifying Components

How can I tell if my Web server works?

Testing your webserver is straightforward: place a file containing some HTML (or even just some text) in the directory in which it expects to find its data (in Apache, DocumentRoot), and make the file world-readable. Start up the webserver if it is not already running, and in your browser, load


http://hostname.example.com/filename

(substituting the name of the server and the filename as appropriate). If you see the contents of the file, your web server is running. If you receive an error, check your web server's error log to see what went wrong.

How can I tell if PHP works?

The simplest way to test PHP is to create a file, phpinfo.php3, somewhere under your web server's document root, with the following contents:


<?php phpinfo() ?>

Upon accessing it with a browser, you should be presented with a summary of your PHP configuration. If you see the program text itself, your web server does not know to interpret the file with PHP.

How can I tell if Horde and PHPlib work?

[Horde 1.2]: Horde includes a PHP program which will test both your Horde and PHPlib installations. If you have horde installed in the usual location, point your browser at


http://hostname.example.com/horde/test.php3

Verify the following from the information test.php3 offers:

  • You are running a stable release of PHP.
    • IMAP support reads "Yes"
    • If you plan on using MySQL, PostgreSQL, or LDAP, their "Support" lines read "Yes".
    • track_vars reads "Yes".
    • PHPLIB reads "Yes".
    • A HordeSession instance was successfully created.
    • The link reading "Click here to test PHPLIB for Horde" functions as described.
    • Both magic_quotes settings read "Yes".

[Horde 2.0]: Horde includes a PHP program which will test both your Horde and PHP installations. If you have horde installed in the usual location, point your browser at


http://hostname.example.com/horde/test.php

Verify the following from the information test.php offers:

  • You are running a supported version of PHP.
    • Gettext support reads "Yes"
    • IMAP support reads "Yes"
    • If you plan on using MySQL, PostgreSQL, or LDAP, their "Support" lines read "Yes".
    • magic_quotes_runtime set to Off reads "Yes".
    • The session counter increments when the page is reloaded.
    • All the PEAR options return "Yes".

This page also may have links to test pages for other installed modules, and/or links to other PHP information pages available.

How can I tell if my IMAP server works?

The simplest way to test an IMAP server is to send mail to an account on the IMAP server, and then use a standard IMAP client like Netscape Mail, Outlook Express, PINE, mutt, or Eudora Pro to read the mail.

If you don't have a standard IMAP client handy, or if a standard client fails, you can telnet to port 143 of your IMAP server and try the following exchange (where "normal" server responses are emphasized):

* OK imap.example.com IMAP4rev1 v12.264 server ready

0 login yourusername yourpassword

0 OK LOGIN completed

0 logout

If you don't get OK LOGIN, then your server is probably misconfigured (unless you are using a specific authentication module such as Kerberos, in which case you will probably have to test it with a real IMAP client or the mtest program included with the UW-IMAP c-client distribution).

How can I tell if my database works?

The most straightforward way of testing your database is to create the Horde databases themselves; if the creation proceeds without error, then the database is probably functioning normally.

You can also use the following code, contributed by <chowes@ics.bc.ca>:


   <HTML>

   <BODY>

   This is a test:

   <?php

      function test() {

         if (!($db = mysql_pconnect(localhost,root,yourpassword))){ return 1; }

     if (!($imp = mysql_create_db(testdb, $db))) { return 2; }

     if (!($imp = mysql_select_db(testdb, $db))) { return 3; }

     if (!($result = mysql_db_query(testdb, "create table testtest ( test char(60))", $db))) 

             { return 4; }

     if (!($result = mysql_db_query(testdb, "insert into testtest values ('hello world!')", $db))) 

             { return 5; }

     if (!($result = mysql_db_query(testdb, "select * from testtest", $db)))

            { echo "$result";return 6; }

     if (mysql_num_rows($result)>0)

            echo (mysql_result($result, 0, 0));

     if (!($result = mysql_db_query(testdb, "delete from testtest", $db))) { return 7; }

     if (!($imp = mysql_drop_db(testdb, $db))) { return 8; }

     return 9;

      }

      $r = test();

      echo "<BR>result code = $r";

   ?>

   </BODY>

   </HTML>

Then, load the file with your browser. It will create a database, a table, and a row; put data into the row; then delete the row, the table, and the database. If successful, the output will read


This is a test: hello world!

result code=9

If it does not, at least you can see where it breaks, by matching the result code with the return statement in the program; the line on which the matching return statement lies is the one which failed. For instance, if result code=1, then mysql isn't running, or a bad host/username/password has been entered.

Troubleshooting IMP

Troubleshooting Turba

Troubleshooting Trean

Can't save bookmarks or categories.

This usually means one of the following:

  • You didn't properly setup your Horde categories driver in horde/config/conf.php.
    • You set your categories driver to something which can't save data between sessions (like the "session" or "none" drivers.
    • You failed to create the needed category storage for your category setup (e.g. didn't create the database tables when using the sql driver).

Troubleshooting Chora

Why do I get a 404, Object not found error when clicking on any cvsroot subdirectories?

Some web servers do not support PATH_INFO, or have it disabled by default, in which case this problem will arise. Try to disable PATH_INFO usage by setting $conf['options']['use_path_info'] to false in horde/chora/config/conf.php.