CentOs 7 – Instalar pdo_sqlsrv para conectarse a base de datos SqlServer

Si necesitas conectar desde CentOs7 a un servidor SqlServer de Microsoft, necesitarás tener instalado los módulos pdo_sqlsrv.so Te mostramos los pasos en CentOs 7 para Instalar pdo_sqlsrv y conectarte a base de datos SqlServer:

El módulo pdo_sqlsrv de PHP permite que puedas conectarte a una base de datos de Microsoft SqlServer. Si bien, la mayoría de servidores Linux te vienen con los módulos de mysql, sqlite y postgrest… el SqlServer normalmente no está instalado.

Atento: sólo si sabes lo que haces. No me hago responsable de nada. Si lo ejecutas, es bajo tu responsabilidad.

Atención 2: Haced copias de vuestro servidor !!! O tened contacto con preveedor para que os pueda restablecer el servidor en caso de tener problemas.

Atención 3: Cambiad la versión de PHp en las tareas correspondientes. Si tenéis PHP 7.0, la orden será:

# /opt/plesk/php/7.0/bin/pecl install pdo_sqlsrv

y no como en el ejemplo:

# /opt/plesk/php/7.1/bin/pecl install pdo_sqlsrv

Atentos. Id punto a punto y echad un vistazo antes a cada orden. Todo depende de la versión que tengáis intalado de Plesk y PHP. E insisto, no me hago responsable de lo que pueda ocurrir.:

# curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
# yum remove unixODBC-utf16 unixODBC-utf16-devel
# ACCEPT_EULA=Y yum install msodbcsql
# yum install unixODBC-devel gcc-c++ gcc plesk-php70-devel autoconf automake
# /opt/plesk/php/7.0/bin/pecl install pdo_sqlsrv
# echo "extension=pdo_sqlsrv.so" > /opt/plesk/php/7.0/etc/php.d/pdo_sqlsrv.ini
# /opt/plesk/php/7.0/bin/pecl install sqlsrv
# echo "extension=sqlsrv.so" > /opt/plesk/php/7.0/etc/php.d/sqlsrv.ini
# plesk bin php_handler --reread

Después, deberá ir a plesk o CPanel y reiniciar el servicio de PHP. Normalmente debe ir en Plesk en el apartado del servidor y seleccionar Administrador de Servicios, parar el servicio de PHP, y con suerte, volverlo a iniciar y tener ya instalado el módulo.

Para comprobarlo, puede hacerlo con el creando un fichero info.php con la función phpinfo(), y verá que el módulo sqlsrv.so está instalado y activado. Otra manera es listar los módulos desde consola con la orden:

php -m

O para ser más concretos, con la siguiente orden veremos todos los módulos PHP instalados que contienen sql:

php -m | grep sql

Pues ya tenemos otro artículo para se suma al listado de tutoriales sobre servidores web.

Para más información:

How to install mssql or sqlsrv extensions for PHP?
Loading the Microsoft Drivers for PHP for SQL Server
Download the Microsoft Drivers for PHP for SQL Server for Linux

Esperamos que este artículo: «CentOs 7 – Instalar pdo_sqlsrv para conectarse a base de datos SqlServer» os sea de utilidad.

Si no funciona

Uno de los problemas que pueda pasar, es que no tengas el Driver ODBC de MSQL instalado. Para saber si tienes el driver ODBC de Microsoft instalado, ejecuta la siguiente orden

odbcinst -q -d

Se te listarán los drivers ODBC que tengas. Si ves el de MySQL y el de Prosgress, pero no el de Microsoft SqlServer, debes instalarlo. Para hacerlo en CentOS 7, debes seguir las siguientes órdenes:

#RedHat Enterprise Server 7 (Mismo que CentOS 7)
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo

#Con esto evitas algunos conflictos. Pero yo, personalmente no lo ejecuto
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts

#instalamos 
sudo ACCEPT_EULA=Y yum install msodbcsql17

Ahora si, deberías ejecutar odbcinst -q -d y debería salir el driver de Microsoft.