[cvs] [Wiki] created: Doc/Dev/ConfigurationH4

Michael Slusarz slusarz at horde.org
Tue Feb 2 19:17:45 UTC 2010


slusarz  Tue, 02 Feb 2010 14:17:45 -0500

Created page: http://wiki.horde.org/Doc/Dev/ConfigurationH4

+ Configuration files

All applications' configuration files are inside the applications'  
{{config/}} directories. All configuration files are valid PHP files.  
This has the drawback that they are more difficult to edit, and that  
administrators might create invalid PHP code, leading to parsing  
errors and breaking the applications.

But there are several good reasons for making configuration files PHP code:
* There is no overhead in parsing the files, they provide  
configuration data in a format that can be used in the applications  
immediately.
* One can use the result of PHP expressions in configuration values,  
e.g. gettext strings ({{_("Some translated string")}}), or references  
({{$_SERVER['SERVER_NAME']}})
* Experienced administrators with PHP knowledge can create lookup  
functions that return dynamic configuration values, e.g.  
{{$servers['host'] = lookup_host();}} with {{lookup_host()}} being a  
function looking up the {{'host'}} value from a database or LDAP  
directory depending on the user name.

There is a set of default configuration files that are mandatory for  
an application, or optional but consistently used across all  
applications:
* {{conf.php}}: This is the main configuration file that contains  
global options for every application.
* {{prefs.php}}: This file controls the available user preferences for  
the application, their default values, and also controls which  
preferences users can alter.
* {{mime_drivers.php}}: This file controls local MIME drivers for the  
application, specifically what kinds of files are viewable and/or  
downloadable.
* {{servers.php}}, {{backends.php}}, {{sources.php}}: If an  
application can connect to different servers, backends, or  
directories, these will be defined and configured here.

Normally, the configuration files have distributed examples with a  
{{.dist}} suffix appended to the file names. The {{prefs.php}} file  
for example comes distributed as {{prefs.php.dist}}. Applications are  
configured by copying e.g. {{prefs.php.dist}} to {{prefs.php}} and  
editing the configuration files with any text editor.

The only exception is currently the {{conf.php}} file, which no longer  
comes as a {{conf.php.dist}} file, but as a {{conf.xml}} file  
containing the available options and their default values as XML  
markup (see ((ConfXML))). A graphical setup interface is created from  
this XML data that administrators can open and edit in their browsers.  
If they submit the configuration form, the PHP configuration files are  
created automatically, they no longer need to edited manually. This  
approach solves most of the drawbacks with PHP configuration files  
while keeping the good things:
* The chances are much lower that administrators accidentally break  
the configuration files by creating invalid PHP code.
* Configuration is much easier using a graphical interface.
* The configuration files are still PHP code.
* Administrators can still customize the configuration with their own  
PHP code.

This approach will be extended over other configuration files in the future.



More information about the cvs mailing list