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, at least if you properly configured error logging in your PHP setup.
Possible reasons could be a fatal PHP error, not being displayed to the browser (which is a good thing on production systems, but bad if you are trying to hunt down a problem)1, or a segfaulting server process (happens most times in the c-client library while using IMP 4 or older). If you correctly configured your web server and PHP to log all errors, you should find more information in your web server's or PHP's log files, or whereever you log the errors (syslog etc.).
Another place to see is the Horde log which is being configured in Horde's setup. By default Horde is logging to the syslog if using Horde 4 or later, resp. to the file /tmp/horde.log if using Horde 3 or older.
If you have a partially rendered screen and you have installed into a separate PEAR (other than the system wide PEAR install), make sure you set the PHP_PEAR_SYSCONF_DIR environment variable as described in the INSTALL docs.
If looking at the Horde log file you see a successful login attempt, and the login screen doesn't contain any error message, or the login screen keeps reloading while you are using the "Automatic" authentication driver, e.g. during the initial setup.
This happens if sessions aren't working properly for some reason. These are possible troubleshooting steps and their solutions:
These symptoms may be caused by three issues:
You didn't configure a permanent preference backend like SQL or LDAP. Preference backends are used to store user settings and personal stuff like the last login time. As an administrator go the the setup screen for Horde, select the Preference System tab, and enter the necessary settings. The PHP Sessions backend does not store the user settings permanently. You might also need to create some storage resource in the backend of your choice, e.g. a table in your SQL database or a scheme in your LDAP directory. But this is covered in the installation documentation.
When you are using preferences data from Horde 2.x with Horde 3.0, you have to delete all last_login preferences, as mentioned in the upgrading instructions. This could be done with an SQL statement like:
DELETE FROM horde_prefs WHERE pref_name = 'last_login';
Similar to the problem above with last login time, you may have a corrupted preference value, in this case, the last_maintenance preference. You can clear it for all users on a SQL backend by running a statement such as:
DELETE FROM horde_prefs WHERE pref_name = 'last_maintenance';
The only side effect of this will be all users seeing the maintenance prompt one more time, and then it should behave normally.
Internet Explorer has known problems with the combination of HTTP-1.1 keepalive and SSL encryption. Many Apache configurations use a BrowserMatch or SetEnvIf directive, like this one, to solve this problem:
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
This error message is from Horde and appears if migration/ directories from Horde Framework packages either cannot be located, of if the package.xml files for those packages cannot be parsed. The latter should log additional information to the Horde log file (syslog by default).
A few things to check:
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.)
The browser 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.
See A blank white screen appears
The set_perms.sh script and some packaged distributions change the permissions on the test.php 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 or what Horde applications are installed. To use the script while setting up Horde, add read permission for your web server to the script:
chmod +r horde/test.php
Remember to remove read permission (chmod a-r) from the file when you have finished testing.
Either recompile PHP without the --enable-memory-limit option, or increase the value of memory_limit in your php.ini file.
Note that when making a change to your php.ini file you will probably need to restart your web server software in order for the changes to become active.
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 Log and other required PEAR packages (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. Horde's test.php script will give you an overview of which required PEAR packages are installed and which are missing.
For more detailed instructions on installing PEAR modules, see the PEAR documentation at http://pear.php.net/manual/.
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 are fixed to not cause these 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
Note that when making a change to your php.ini file you will probably need to restart your web server software in order for the changes to become active.
[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. Current Horde versions check to see if the gz output buffer is in place before adding it again.
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.
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.
If you see this message from kronolith or trean (or any other application that 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 ownership of <your_vfs_root>/.horde.
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.
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).
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.
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
On some systems (commonly Solaris and FreeBSD), the upload_tmp_dir setting in php.ini must be set to /var/tmp.
Note that when making a change to your php.ini file you will probably need to restart your web server software in order for the changes to become active.
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.
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.
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:
This page also may have links to test pages for other installed modules, and/or links to other PHP information pages available.
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).
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> <head><title>DB Test</title></head> <body> This is a test:<br> <?php function test() { if (!($db = mysql_connect('localhost','root','yourpassword'))) return 1; if (!mysql_query('create database testdb', $db)) return 2; if (!mysql_select_db('testdb', $db)) return 3; if (!mysql_db_query('testdb', 'create table testtest ( test char(60))', $db)) return 4; if (!mysql_db_query('testdb', 'insert into testtest values (\'hello world!\')', $db)) return 5; if (!($result = mysql_db_query('testdb', 'select * from testtest', $db))) return 6; if (mysql_num_rows($result) > 0) echo mysql_result($result, 0, 0); if (!mysql_db_query('testdb', 'delete from testtest', $db)) return 7; if (!mysql_query('drop database 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.
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.
I get the following error when setting up vacations using the Vacation Horde module.
The original message was received at Tue, 7 Mar 2006 17:03:07 +0100 from xxx.senderdomain.com [xxx.xxx.xxx.xxx] ----- The following addresses had permanent fatal errors ----- "|/usr/bin/vacation xxx" (reason: Data format error) (expanded from: <xxx@example.com>) ----- Transcript of session follows ----- 501 5.6.0 Data format error
find this line of code in your "pathtohorde/vacation/lib/Driver/forwards.php" file
// Try to change permissions, but ignore any errors. $this->_vfs->changePermissions('', '.forward', '0600');
$this->_vfs->changePermissions('', '.vacation.db', '0640'); $this->_vfs->changePermissions('', '.vacation.msg', '0640'); $this->_vfs->changePermissions('', '.vacation.dir', '0640'); $this->_vfs->changePermissions('', '.vacation.pag', '0640');