Conectarse a Microsoft SQL Server desde PHP 7 – Drivers PHP para SQL Server

00¡Hola a todos! Las versiones más actuales de PHP son de la 7 en adelante, y es un hecho que la extensión mssql que se usaba antes en la versión PHP 5.6 (para abajo…) ya es totalmente obsoleta; tanto así que ya no funcionan :'(  (mssql_connect, mssql_query, etc.). Es por ésta razón que ahora ha cambiado la situación, y debemos de recurrir a drivers que nos permitan conectarnos a éste gestor de BD específico: Microsoft SQL Server.

Sí, sé que para muchos es como un “pecado” usar PHP para conectarse a SQL Server de Microsoft dado que para eso tenemos a MySQL, la cual es la fórmula perfecta, pero bueno… ya en los entornos laborales sí que es necesario éste tipo de conexiones con SQL Server.

Básicamente veremos sobre el driver para PHP para SQL Server que ha creado Microsoft, el cual permite la lectura y escritura de datos de SQL Server desde scripts PHP. La extensión SQLSRV proporciona una interfaz de procedimiento, mientras que la extensión PDO_SQLSRV implementa PDO para acceder a los datos en todas las ediciones de SQL Server 2008 R2 y posterior (incluido SQL DB de Azure).

Lo primero, es tener el entorno adecuado, o sea, la plataforma LAMP instalada, la cual la podemos instalar fácilmente con tasksel.

sudo apt install tasksel
sudo tasksel

Solo seleccionamos (chequeamos con el espacio de barra) “LAMP Server” y Aceptamos la instalación.

Ya con esto, tenemos la base. Ahora instalaremos algunos otros paquetes (pre-requisitos); agregamos a nuestros orígenes de software la cuenta GitHub de microsoft, instalamos los paquetes principales de los drivers, actualizamos la variable de entorno PATH y pues ya con esto tenemos la instalación inicial. A continuación, las líneas de código hasta ahorita:

sudo apt install mcrypt php7.0-mcrypt php-mbstring php-pear php7.0-dev php7.0-xml
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql mssql-tools 
sudo apt-get install unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

Continuando, se instalará los drivers/extensión de php propiamente. Se realizarán varias configuraciones que, para facilitar la vida al usuario de tener que abrir el archivo, buscar un parámetro, agregar/modificar algo, etc., nos lo ponen fácil con una (y más adelante también) línea de comando. También, hacemos uso de PECL (repositorio de extensiones PHP) para agregar las extensiones a PHP. Tomar en cuenta que éste tutorial lo hago en base a la documentación oficial del proyecto.

sudo pear config-set php_ini `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"` system
pecl install sqlsrv
pecl install pdo_sqlsrv

Ahora se harán unas configuraciones en Apache (deshabilitar y habilitar unos módulos) y en el archivo de configuración de php (php.ini) para que todo funcione bien.

a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php7.0
echo "extension=sqlsrv.so" >> /etc/php/7.0/apache2/php.ini
echo "extension=pdo_sqlsrv.so" >> /etc/php/7.0/apache2/php.ini

Finalmente, reiniciamos el servicio de apache2 y ya tendría que estar todo listo.

sudo systemctl restart apache2

Ahora, para hacer la prueba de fuego de que realmente se esté conectando a SQL Server, crearemos un archivo php con el siguiente contenido en /var/www/html/ (generalmente, en ésta ubicación se colocan los archivos a publicarse en Apache2).

prueba.php

<?php
//Parámetros de conexión al SQL Server
$serverName = "nombre_servidor";
$connectionOptions = array(
    "Database" => "nombre_base_de_datos",
    "Uid" => "usuario",
    "PWD" => "clave"
);
//Establecimiento de la Conexión
$conn = sqlsrv_connect( $serverName, $connectionOptions );
if( $conn === false ) {
    die( FormatErrors( sqlsrv_errors()));
}
//Agregamos la consulta aquí. Como es de prueba, veremos la versió del SQL
$tsql= "SELECT @@Version as SQL_VERSION";
//Ejecutamos la consulta
$getResults= sqlsrv_query( $conn, $tsql );

//Controlamos los errores
if ( $getResults == FALSE )
    die( FormatErrors( sqlsrv_errors()));
?> 
 <h1> Resultados : </h1>
 <?php
while ( $row = sqlsrv_fetch_array( $getResults, SQLSRV_FETCH_ASSOC )) {
    echo ( $row['SQL_VERSION']);
    echo ("<br/>");
}
sqlsrv_free_stmt( $getResults );
function FormatErrors( $errors )  
{  
    /* Mostrar error. */  
    echo "Información del error: <br/>";  
  
    foreach ( $errors as $error )  
    {  
        echo "SQLSTATE: ".$error['SQLSTATE']."<br/>";  
        echo "Código: ".$error['code']."<br/>";  
        echo "Mensaje: ".$error['message']."<br/>";  
    }  
}  
?>

Nos vamos al navegador y colocamos la URL respectiva (por ejemplo http://localhost/prueba.php). Debería de aparecer algo parecido a esto:

g01

Y con esta ¡ya estamos listos para desarrollar!.

¡Saludos!

Comentarios por Facebook

comentarios

Una respuesta a “Conectarse a Microsoft SQL Server desde PHP 7 – Drivers PHP para SQL Server”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*