En este artículo se explica cómo instalar los drivers oficiales de Microsoft de ODBC para SQL Server de Linux en un Ubuntu 20.04 LTS para la versión versión 7.4 de PHP-FPM.
Pero puedes seguir los mismos pasos para instalarlo en cualquier imagen con Ubuntu 20.04 LTS disponible, por ejemplo la actual Imagen preinstalada de HestiaCP.
También puedes utilizar el artículo para instarlos en otra versión de PHP modificando los comandos por la versión correspondiente y puedes saltar el paso de instalación de PHP-FPM si tienes todos los paquetes requeridos instalados previamente.
Instalación de PHP-FPM
El primer paso es añadir el repositorio de PHP:
# add-apt-repository ppa:ondrej/php -yY actualizar los repositorios:
# apt-get updateLuego instala paquetes de PHP:
# apt-get install php7.4 php7.4-dev php7.4-fpm php7.4-xml -y --allow-unauthenticatedInstalación de drivers
Primero será necesario instalar el siguiente paquete para odbc en Linux:
# apt install unixodbc-devAdquiere y añade la llave para el repositorio de Microsoft:
# curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -Para añadir el repositorio de Microsoft de Ubuntu 20.04 LTS posteriormente:
# curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.listDe nuevo actualizar los repositorios para los añadidos recientemente:
# apt-get updateLuego, acepta los términos e instalar el paquete de drivers:
# ACCEPT_EULA=Y apt-get install -y msodbcsql17Lo mismo para el paquete de herramientas, acepta los términos e instala paquete:
# ACCEPT_EULA=Y apt-get install -y mssql-toolsDespués añade el path para el binario:
# echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc && source ~/.bashrcConfigura el fichero para el PHP:
# pecl config-set php_ini /etc/php/7.4/fpm/php.iniE instala los dos controladores:
# pecl install sqlsrv && pecl install pdo_sqlsrvAñade la extensión pdo_sqlsrv:
# printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.4/mods-available/pdo_sqlsrv.iniY también la extensión sqlsrv:
# printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.4/mods-available/sqlsrv.iniPor último, reinicia el servicio PHP-FPM correspondiente:
# systemctl restart php7.4-fpmComprobaciones
Puedes ejecutar el siguiente comando para verificar el funcionamiento de extensiones:
# phpenmod -v 7.4 sqlsrv pdo_sqlsrv && ls /etc/php/7.4/fpm/conf.d/*sqlsrv.iniLuego, también puedes crear un fichero en el directorio web para realizar una prueba (ejemplo de ruta de HestiaCP):
# vi /home/admin/web/ejemplo.com/public_html/testsql.phpCon el siguiente contenido del fichero, modificando los valores para la conexión con el SQL Server (sino debería dar timeout):
<?php
try {
$serverName = "IPonombredeservidorSQL";
$databaseName = "Nombredebasededatos";
$uid = "Nombredeusuario";
$pwd = "Contraseñadeusuario";
$conn = new PDO("sqlsrv:server = $serverName; Database = $databaseName;", $uid, $pwd);
// Select Query
$tsql = "SELECT @@Version AS SQL_VERSION";
// Executes the query
$stmt = $conn->query($tsql);
} catch (PDOException $exception1) {
echo "<h1>Caught PDO exception:</h1>";
echo $exception1->getMessage() . PHP_EOL;
echo "<h1>PHP Info for troubleshooting</h1>";
phpinfo();
}
?>
<h1> Success Results : </h1>
<?php
try {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['SQL_VERSION'] . PHP_EOL;
}
} catch (PDOException $exception2) {
// Display errors
echo "<h1>Caught PDO exception:</h1>";
echo $exception2->getMessage() . PHP_EOL;
}
unset($stmt);
unset($conn);
?>Fuentes oficiales en español:
Instalación de drivers Microsoft ODBC para SQL Server en Linux
Tutorial de instalación para controladores SQL Server en Ubuntu con PHP-FPM
¿Lo has probado? ¡Déjanos tus comentarios!