Community wiki

Community wiki
SyncML Install HowTo

How to setup a SyncML server using eGroupWare

SyncML should be working out of the box, when your webserver fulfills following requirements:
  • Apache Webserver (tested with Apache 1.3 and Apache 2.0)
  • PHP5(PHP4 does not work, but you can run php5 as a cgi and leave php4 as an apache module. see below)
  • Pear needs to be installed
  • egw-pear needs to be installed
  • eGroupWare 1.3 Beta 3 or better
You can verify that your server fulfills the requirements, be using the setup module of your eGroupWare installation.

Some additional notes:

PHP5 as an Apache Module

SyncML requires PHP5. It will not work with PHP4 installed. Currently we have tested SyncML with PHP 5.0.X as Apache module.

You need to add following lines to your apache configuration:

<Location /egroupware/rpc.php>
php_value mbstring.func_overload 0
Order allow,deny
Allow from all

If you are using the RPM's, we have added this statement already for you.

PHP5 as a CGI

If you need to keep PHP4 as a module, but still want to have SyncML, you will need to run PHP5 as a CGI. You will need to install PHP5 CGI, PHP5 MySQL/PSQL? (depending on which you are using) and PHP5 LDAP if you are using LDAP.

You need to add following lines to your apache configuration:

<Location /egroupware/rpc.php>
Order allow,deny
Allow from all
AddHandler php5-script .php
Action php5-script /cgi-bin/php5

Notice that php_value mbstring.func_overload 0 is missing. That is because php_value mbstring.func_overload 0 is the default behaviour of php.

Debian Note

Debian users can get PHP5 CGI from Put

deb sarge-backports main

in your apt source list, then:

apt-get update && apt-get install php5-cgi php5-mysql php5-ldap


You need to install PEAR.
PEAR is available for most distros as php{5}-pear package and also for XAMPP. For more info see


  • The SyncML server currently only works with PHP sessions. It will not work with DB sessions. This is a limitation of the current code and will be removed in the future release.

  • To verify that you configured everything correctly, just point your browser to It will display you any errors detected.
  • Also check access rights for the user / group that want to sync:
    • egw-pear
    • syncml
  • DB Tables
    • egw_syncmldeviceowner
    • egw_syncmldevinfo
    • egw_syncmlsummary

Debug information

To get a full trace of the communication done between the SyncML client and egroupware, please create the directory /tmp/sync. If you need to write the SyncML logfiles to another location, please specify an existing and by the webserver writeable path in: phpgwapi/inc/horde/Horde/RPC/syncml.php in var $_debugDir = '...';

For easy debuging you can place that path in the docroot and put an autoindex script (eg. in it. In that case you have to secure it with a .htaccess file, as the debug-files contains the complete xml-comunication including the passwords!!!

That dir contains files with the communication, always starting with a client request and answered by a server response, which share the same number in the file-name.

To get detailed information about the synchronisation process, edit the file
and change the line

$conf['log']['priority'] = PEAR_LOG_INFO;


$conf['log']['priority'] = PEAR_LOG_DEBUG;

Now you can have a closer look at /tmp/egroupware_syncml.log.


Lars and I plan to make the SyncML stuff a real eGW application, with an own configuration and preferences:
- for easier configuration (no need to edit the sources)
- better access control (now all eGW users can sync everything they have read-access too)
- allow to limit the sync on certain categories
- specify a timespan to sync


You are here