Aby połączyć się za pomocą skryptu PHP z bazą postawioną na serwerze MS SQL należy doinstalować bibliotekę dblib poprzez wykonanie polecenia:

apt-get install php5-sybase

lub

apt-get install php7.0-sybase

A następnie zainstalować:

apt-get install unixodbc tdsodbc

Po zainstalowaniu tych pakietów należy je ustawić.

Do pliku /etc/odbc.ini (który powinien być pusty) dopisujemy:

# Define a connection to a Microsoft SQL server
# The Description can be whatever we want it to be.
# The Driver value must match what we have defined in /etc/odbcinst.ini
# The Database name must be the name of the database this connection will connect to.
# The ServerName is the name we defined in /etc/freetds/freetds.conf
# The TDS_Version should match what we defined in /etc/freetds/freetds.conf
[mssql]
Description             = MSSQL Server
Driver                  = freetds
Database                = XXXXXX
ServerName              = MSSQL
TDS_Version             = 7.1

Do pliku /etc/odbcinst.ini dopisujemy:

# Define where to find the driver for the Free TDS connections.
# Make sure you use the right driver (32-bit or 64-bit).
[freetds]
Description = MS SQL database access with Free TDS
Driver      = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
#Driver      = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup       = /usr/lib/i386-linux-gnu/odbc/libtdsS.so
UsageCount  = 1

A do /etc/freetds/freetds.conf (lub w /etc/freetds.conf)

# The basics for defining a DSN (Data Source Name)
# [data_source_name]
#       host = <hostname or IP address>
#       port = <port number to connect to - probably 1433>
#       tds version = <TDS version to use - probably 8.0>

# Define a connection to the Microsoft SQL Server
[mssql]
    host = XXXXXX
    port = 1433
    tds version = 7.1

Zmieniamy tds version = 7.1 w zależności od wersji.

Wersja FreeTDS Obsługiwana wersja Microsoft SQL Server Obsługiwana najwyższa wersja TDS Data zakończenia rozszerzonego wsparcia technicznego Microsoft
1.0020167.4July 9th, 2024
1.0020147.4July 9th, 2024
1.0020127.4July 12th, 2022
0.9520087.3July 9th, 2019
0.9120057.2April 12th, 2016
0.8220007.1April 9th, 2013
0.6420007.1April 9th, 2013

Dla sprawdzenia konfiguracji można tworzymy skrypt php:

<?php
  try {
    $hostname = "myhost";
    $port = 10060;
    $dbname = "tempdb";
    $username = "dbuser";
    $pw = "password";
    $dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");
  } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
  }
  $stmt = $dbh->prepare("select name from master..sysdatabases where name = db_name()");
  $stmt->execute();
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
  unset($dbh); unset($stmt);
?>

Otwieramy go na stronie lub z linii poleceń na serwerze.

Ważne aby serwer MS SQL miał uruchomiony serwis SQL Server Browser.

Źródła:
https://www.php.net/manual/en/ref.pdo-dblib.php
https://stackoverflow.com/questions/20163776/connect-php-to-mssql-via-pdo-odbc
https://www.freetds.org/userguide/choosingtdsprotocol.htm