'How to connect to MSSQL Server with PHP from Ubuntu 18.04?

I want to establish a MSSQL Connection from Ubunutu 18.04. It was quite hard to get this set up, but know it works so far that I can use sql_srv class or pdo class. But when I want to connect, the connection fails with error

Array ( [0] => Array ( [0] => 01000 [SQLSTATE] => 01000 [1] => 0 [code] => 0 [2] => [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 13 for SQL Server' : file not found [message] => [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 13 for SQL Server' : file not found ) ).

How can I resolve this issue and what does this error mean? I've installed ODBC 17.

 odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

And the nano /etc/odbcinst.ini shows:

[ODBC Driver 17 for SQL Server] Description=Microsoft ODBC Driver 17 for SQL Server Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.5.so.1.1 UsageCount=1

What should I do to connect with MSSQL Server 2014 from ubuntu 18.04?



Solution 1:[1]

SOLVED: via this three pages I could install the correct Driver Version:

https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15#ubuntu17

Pecl install sqlsrv returns No releases available for package

Download drivers from http://pecl.php.net/package/sqlsrv/5.8.0

sudo bash -c "echo extension=sqlsrv.so > /etc/php/7.2/mods-available/sqlsrv.ini"
sudo ln -s /etc/php/7.2/mods-available/sqlsrv.ini /etc/php/7.2/apache2/conf.d/sqlsrv.ini
sudo ln -s /etc/php/7.2/mods-available/sqlsrv.ini /etc/php/7.2/cli/conf.d/sqlsrv.ini
sudo bash -c "echo extension=pdo_sqlsrv.so > /etc/php/7.2/mods-available/pdo_sqlsrv.ini"
sudo ln -s /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/apache2/conf.d/pdo_sqlsrv.ini
sudo ln -s /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/cli/conf.d/pdo_sqlsrv.ini


sudo systemctl restart apache2

Solution 2:[2]

  1. Install PECL
  2. Follow steps mentioned on https://docs.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15
  3. Restart Apache
  4. Use below PHP script to test the connection
//format: serverName\instanceName, portNumber (default is 1433)
$serverName = "localhost";

$connectionInfo = array("Database" => "dbName", "UID" => "myUserName", "PWD" => "myPassword");
$conn = sqlsrv_connect($serverName, $connectionInfo);

if ($conn) {
    echo "Got a connection!<br />";
} else {
    echo "Connection could not be established.<br />";
    die(print_r(sqlsrv_errors(), true));
}

Solution 3:[3]

Use Microsoft Drivers for PHP for Microsoft SQL Server. You will find detailed installation instructions there.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 HeyDanny
Solution 2 Umesh Patil
Solution 3 slaakso