I tested under Fedora 15 and CentOS 5.4 and it works fine, using FreeTDS!
Easy steps:
1. Install unixODBC and freetds:
yum install freetds unixODBC
2. Configure unixODBC to use FreeTDS adding the following code to your /etc/odbcinst.ini file (check the red lines, because the files can change):
[FreeTDS]
Description = ODBC for FreeTDS
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsS.so.2
Driver64 = /usr/lib64/libtdsodbc.so
Setup64 = /usr/lib64/libtdsS.so.2
FileUsage = 1
UsageCount = 1
[ODBC Drivers]
FreeTDS = Installed
3. Create your DSN into /etc/odbc.ini file:
[connection_name]
Driver = /usr/lib64/libtdsodbc.so
Description = My Connection Name
Trace = No
Server = 192.168.0.3
Port = 1433
UID = sql_username_here
Password = sql_password_here
Database = DATABASE_NAME_HERE
[ODBC Data Sources]
connection_name = FreeTDS
4. Test your configuration:
isql -v connection_name sql_username_here sql_password_here
The result will be something like:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
5. Install PHP-ODBC:
yum install php-5.2-odbc-zend-server.x86_64
6. Finally create your PHP Script:
<?php
putenv ( 'ODBCINI=/etc/odbc.ini' );
putenv ( "ODBCINSTINI=/etc/odbcinst.ini" );
$conn = odbc_connect ( 'connection_name', 'sql_username_here', 'sql_password_here' ) or die ( 'Error: ' . odbc_error () );
if (! $conn) {
die ( 'Connection error' );
}
$sql = "SELECT * FROM INFORMATION_SCHEMA.TABLES";
$res = odbc_exec ( $conn, $sql );
odbc_result_all ( $res );
odbc_close ( $conn );
Easy!