Drivers ODBC 13 y PHP de Microsoft para SQL Server en CentOS 7

Microsoft es más Open Source que nunca, ¡y que lo digan! Han cambiado mucho los tiempos en que sólo se podían utilizar las herramientas de Microsoft en Windows, y han cambiado para bien. Una de las limitaciones existentes era utilizar su driver de conexión al SQL Server para PHP en entornos linux, felizmente esa limitación está llegando a su fin gracias a las versiones para linux del Microsoft ODBC Driver 13 (preview) y Microsoft Drivers para PHP (early technical preview).

También en la evolución de estas herramientas hay un cambio radical, de instalaciones totalmente artesanales al principio ya hemos llegado al punto en que el primero está disponible con yum y el segundo es compatible con repositorios existentes como los de remi.

Voy a comenzar asumiendo que ya tienes instalado PHP 7 (importante, la versión 7 es la única soportada) en tu servidor con CentOS 7, si no sabes cómo, lo puedes ver en el post donde instalo las últimas versiones de nginx y php.

Instalando Microsoft ODBC Driver 13 (preview)


Nota 1: Si tienes instalada una versión previa siguiendo el manual de instalación anterior o el script de instalación, tienes que desinstalarlo siguiendo los pasos del primer enlace.

Nota 2: Este driver lleva como dependencia unixODBC por eso es necesario desinstalar cualquier versión previa (unixODBC es utilizado por la librería php-odbc así que ojo, si lo eliminas, desinstalas esa librería y tienes que volverla a instalar luego).

El primer paso es instalar el repositorio desde el que descargaremos el paquete del driver.

sudo su
yum-config-manager --add-repo https://apt-mo.trafficmanager.net/yumrepos/mssql-rhel7-preview/
yum-config-manager --enable mssql-rhel7-preview
rpm --import dpgswdist.v1.asc
wget "http://aka.ms/msodbcrhelpublickey/dpgswdist.v1.asc"

Eliminamos unixodbc

yum remove unixodbc #para evitar conflictos durante la instalación

Puede que este paquete no este instalado con ese nombre, no os preocupéis porque al intentar instalar msodbcsql dará error y podréis borrar el paquete correcto, en mi caso el error era: unixODBC-utf16 conflicts with unixODBC-2.3.1-11.el7.x86_64 con lo cual pude eliminarlo ejecutando yum remove unixODBC-2.3.1-11.el7.x86_64

Ahora instalamos los paquetes necesarios, desde Microsoft recomiendan ejecutar yum update antes.

yum install msodbcsql
yum install unixODBC-utf16-devel

El último paso es opcional pero se recomienda pues contiene los archivos de desarrollo (cabeceras y bibliotecas) para unixODBC, una implementación de la interfaz ODBC para sistemas Unix. Debes instalar este paquete si tienes la intención de desarrollar aplicaciones de lenguaje C que utilizan ODBC o para compilar aplicaciones que utilizan fuentes ODBC.

Para instalaciones en otros sistemas operativos podéis seguir la guía oficial actualizada.

Comprobemos que se ha instalado correctamente

# odbcinst -q -d -n "ODBC Driver 13 for SQL Server"
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/opt/microsoft/msodbcsql//lib64/libmsodbcsql-13.0.so.0.0
Threading=1
UsageCount=1

Instalando Microsoft Drivers para PHP (early technical preview)


Ahora solo falta descargar la versión del driver de PHP que corresponde a nuestra versión, copiarla en la carpeta de extensiones y activarla en el php.ini.

Nota: existen muchas guías de instalación pero todas pasan por compilar PHP, esta es a fecha de hoy la variante más rápida y compatible con yum que existe para CentOS 7, con las ultimas versiones de ambos drivers.

Comentarios