Instalação da biblioteca de Banco de Dados MS-SQL no PHP com Linux

2023-06-16
Voltar

Para incluir os drivers do MS-SQL no PHP rodando em Linux devemos acessar o repositório no GitHub do projeto.
Para a instalação é necessário primeiramente instalar o driver ODBC para Ubuntu (verificar para outras distribuições).

Instalar os pacotes da Microsoft (veja documentação Install the Microsoft ODBC driver for SQL Server (Linux))

$ if ! [[ "18.04 20.04 22.04 22.10" == *"$(lsb_release -rs)"* ]];
$ then
$    echo "Ubuntu $(lsb_release -rs) is not currently supported.";
$    exit;
$ fi

$ sudo su
$ curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

$ curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list

$ exit
$ sudo apt-get update
$ sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
# optional: for bcp and sqlcmd
$ sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18
$ echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
$ source ~/.bashrc
# optional: for unixODBC development headers
$ sudo apt-get install -y unixodbc-dev
Em seguida instalamos os pacotes dos drivers (esses pacotes devem ser instalados com o PECL).
Primeiramente atualizar os protocolos do PECL

$ sudo pecl channel-update pecl.php.net
Em seguida podemos instalar os pacotes dos drivers:

$ sudo pecl install sqlsrv
$ sudo pecl install pdo_sqlsrv
ou (versão instalada na criação dessa nota)

$ sudo pecl install sqlsrv-5.11.0
$ sudo pecl install pdo_sqlsrv-5.11.0
$ sudo su
$ printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
$ printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
$ exit
$ sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv
Fazer isso para todas as versões do PHP desejadas.

Para informações sobre essa instalação consultar a documentação da Microsoft nesse link.

Para testar a conexão do SQLServer verificar essa documentação.

Para comunicação em linha de comando com o DB podemos utilizar o sqlcmd tanto via PowerShell como com o Terminal Linux utilizado.

Linux:
$ sqlcmd -S192.168.0.60 -Usa -Paczf0704 -C -ddbphp7 -Q "SELECT * FROM tb_usuarios"
PowerShell:
C:\> sqlcmd -S 192.168.0.60 -Usa -Paczf0704 -ddbphp7 -Q "SELECT * FROM tb_usuarios"
Veja que quando utilizamos o Linux é necessário a opção -C(trust the server certificate) para indicar que o comando é confiável. Quando utilizamos o numero do IP do servidor no PowerShell devemos colocar um espaço após a opção -S o que não é necessário no Linux.

Obs: Não esquecer de verificar as configurações de acesso via TCP no MS-SQL