Back in July I outlined a method for establishing a SSH tunnel between Linux and Windows machines. The goal of the connection was to enable a PHP script on a front-end Linux web server access to information stored on the back-end private Windows server running SQL Server.
What I didn't mention at the time was how I enabled PHP support for Microsoft's SQL Server.
The most common deployments of PHP on Linux include support for MySQL or Postgres, depending largely on other factors such has the organization's preference, experience and requirements. Since PHP can be deployed on Windows, there is support for Microsoft's SQL Server. Such support is nontrivial to enable in PHP on Linux. It is however possible:
To enabled SQL Server support in PHP on Linux, the PHP extension that provides said support requires the FreeTDS library to build against. FreeTDS is an open source implementation of C libraries originally marketed by Sybase and Microsoft to enable access to their database servers.
Downloading the source code, building and installing FreeTDS is straightforward:
$ wget \ ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz $ gunzip freetds-stable.tgz $ tar xf freetds-stable $ cd freetds $ ./configure $ make $ make install
The next step is to build the PHP source code against the FreeTDS libraries to include SQL Server support. This can be done one of two ways; build PHP from scratch or build the specific PHP extension. Since I was working on a server with a preexisting install of PHP, I opted for door number two:
Locate or download the source code for the preexisting version of PHP. Next, copy the mssql extension source code from the PHP source code into a separate php_mssql directory:
$ cp ext/mssql/config.m4 ~/src/php_mssql $ cp ext/mssql/php_mssql.c ~/src/php_mssql $ cp ext/mssql/php_mssql.h ~/src/php_mssql
Now build the source code, pointing it to where FreeTDS has been installed:
$ phpize $ ./configure --with-mssql=/usr/local/freetds $ make
There should now be a mssql.so file in ~/src/php_mssql/modules/ that can be copied into the existing PHP install. Once copied the last remaining steps are to enable the extension by modify the php.ini file and restarting the Apache HTTP Server.
Additional Information can be found here: Connecting PHP on Linux to MSQL on Windows