En aquest article s'explica com instal·lar els controladors oficials de Microsoft d'ODBC per a SQL Server a Linux en un Ubuntu 20.04 LTS per a la versió 7.4 de PHP-FPM.
Però pots seguir els mateixos passos per instal·lar-los en qualsevol imatge amb Ubuntu 20.04 LTS disponible, per exemple l'actual Imatge preinstal·lada de HestiaCP.
També pots utilitzar l'article per instal·lar-los en una altra versió de PHP modificant les ordres per a la versió corresponent i pots ometre el pas d'instal·lació de PHP-FPM si ja tens tots els paquets necessaris instal·lats.
Instal·lació de PHP-FPM
El primer pas és afegir el repositori de PHP:
# add-apt-repository ppa:ondrej/php -yI actualitzar els repositoris:
# apt-get updateDesprés instal·la els paquets de PHP:
# apt-get install php7.4 php7.4-dev php7.4-fpm php7.4-xml -y --allow-unauthenticatedInstal·lació de controladors
Primer caldrà instal·lar el paquet següent per a odbc a Linux:
# apt install unixodbc-devObtén i afegeix la clau per al repositori de Microsoft:
# curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -Per afegir posteriorment el repositori de Microsoft d'Ubuntu 20.04 LTS:
# curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.listTorna a actualitzar els repositoris per incloure els que has afegit recentment:
# apt-get updateDesprés, accepta els termes i instal·la el paquet de controladors:
# ACCEPT_EULA=Y apt-get install -y msodbcsql17Fes el mateix per al paquet d'eines: accepta els termes i instal·la el paquet:
# ACCEPT_EULA=Y apt-get install -y mssql-toolsDesprés afegeix el path per al binari:
# echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc && source ~/.bashrcConfigura el fitxer per al PHP:
# pecl config-set php_ini /etc/php/7.4/fpm/php.iniI instal·la els dos controladors:
# pecl install sqlsrv && pecl install pdo_sqlsrvAfegeix l'extensió pdo_sqlsrv:
# printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.4/mods-available/pdo_sqlsrv.iniI també l'extensió sqlsrv:
# printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.4/mods-available/sqlsrv.iniFinalment, reinicia el servei PHP-FPM corresponent:
# systemctl restart php7.4-fpmComprovacions
Pots executar l'ordre següent per verificar el funcionament de les extensions:
# phpenmod -v 7.4 sqlsrv pdo_sqlsrv && ls /etc/php/7.4/fpm/conf.d/*sqlsrv.iniDesprés, també pots crear un fitxer al directori web per fer una prova (exemple de ruta de HestiaCP):
# vi /home/admin/web/ejemplo.com/public_html/testsql.phpAmb el contingut següent del fitxer, modificant els valors per a la connexió amb el SQL Server (si no, hauria de donar un error de temps d'espera excedit):
<?php
try {
$serverName = "IPonombredeservidorSQL";
$databaseName = "Nombredebasededatos";
$uid = "Nombredeusuario";
$pwd = "Contraseñadeusuario";
$conn = new PDO("sqlsrv:server = $serverName; Database = $databaseName;", $uid, $pwd);
// Consulta de selecció
$tsql = "SELECT @@Version AS SQL_VERSION";
// Executa la consulta
$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) {
// Mostra els errors
echo "<h1>Caught PDO exception:</h1>";
echo $exception2->getMessage() . PHP_EOL;
}
unset($stmt);
unset($conn);
?>Fonts oficials en espanyol:
Instal·lació de controladors Microsoft ODBC per a SQL Server a Linux
Tutorial d'instal·lació de controladors SQL Server a Ubuntu amb PHP-FPM
Ho has provat? Deixa'ns els teus comentaris!