From SME Server
Revision as of 11:43, 18 June 2009 by Per (talk | contribs) (Created ODBC page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Warning.png Warning:
Under construction, some content may be totally wrong and misleading.


Adding support in SME Server for a universal connection to foreign datebase servers using Open Database Connectivity (ODBC).

Used packages

unixODBC.i386 - unixODBC official site


php-odbc.i386 - a module for PHP applications that use ODBC databases.

freetds - a re-implementation of the Tabular Data Stream protocol made by Sybase and Microsoft. FreeTDS official site

Optional: gcc


Install basic packages via server-manager:




Alt 1: Install precompiled FreeTDS

Install FreeTDS from Dag repository

yum --enablerepo=dag install freetds freetds-devel
signal-event post-upgrade; signal-event reboot

Alt 2: Install FreeTDS from source

wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.82.tar.gz
gzip -d freetds-0.82.tar.gz
tar -xvf  freetds-0.82.tar
yum install gcc
cd freetds-0.82
./configure --sysconfdir=/etc --enable-msdblib --with-tdsver=8.0
make install
make clean
signal-event post-upgrade; signal-event reboot

Warning.png Warning:
Leaving gcc on a production server is considered a security risk, if you do not really need it you should not install it, if you need it you should seriously consider uninstalling gcc when you no longer need it. Removing gcc can be done using the following command:
yum remove gcc

Test with tsql

Check settings:

tsql -C

Should output someting similar to this:

Compile-time settings (established with the "configure" script)
Version: freetds v0.82
freetds.conf directory: /usr/local/etc
MS db-lib source compatibility: no
Sybase binary compatibility: no
Thread safety: yes
iconv library: yes
TDS version: 8.0
iODBC: no
unixodbc: yes

Test connection to a foreign database, overriding settings in freetds.conf:

tsql -S -U testuser -P testpass



mkdir -p /etc/e-smith/templates-custom/etc/freetds.conf
pico /etc/e-smith/templates-custom/etc/freetds.conf/10xp3c

Add your foreign database server (modify to suit your conditions):

  1. SQL Server on Win XP machine
       host =
       port = 1433
       tds version = 8.0  
       instance = db_kalle
expand-template /etc/freetds.conf


mkdir -p /etc/e-smith/templates-custom/etc/odbcinst.ini
pico /etc/e-smith/templates-custom/etc/odbcinst.ini/20sqlserver

Add driver path (modify to suit your conditions):


Description = Ms SQL Server access with FreeTDS driver Driver = /usr/lib/libtdsodbc.so

expand-template /etc/odbcinst.ini


mkdir -p /etc/e-smith/templates-custom/etc/odbc.ini
pico /etc/e-smith/templates-custom/etc/odbc.ini/20sqlserver

Add text (modify to suit your conditions):


Driver = FreeTDS Description = Connection to DB_KALLE on server xp3c Trace = No Server = Database = db_kalle Port = 1433 TDS_Version = 8.0

expand-template /etc/odbc.ini

Check PHP configuration

phpinfo(), section Configure Command, outputs: --with-unixODBC=shared,/usr There should also be a section "odbc".

PHP function odbc_connect should now work.

Additional information

Current forum discussion at http://forums.contribs.org/index.php?topic=44185.0

php.net ODBC