instalace pdo_sqlsrv pro php7.3 na ubuntu 18.04 – návod

kotel
Člen | 3
+
0
-

aneb pokud utrpíte úspěšnou instalaci, tak je dobré si to poznamenat
(na nette mi pro mssql funguje jen sqlsrv driver, odbc má i bez nette zvláštní bugy, že třeba padá, když má tabulka víc jak 10 sloupců)

moje konfigurace:
os: ubuntu 18.04
web: nginx
php: 7.3-fpm

nutné stáhnout knihovnu na githubu (https://github.com/…sql/releases) nebo si ji sám zkompilovat

stáhnete balík Ubuntu1804–7.3.tar (případně jiný podle OS)

wget https://github.com/Microsoft/msphpsql/releases/download/v5.5.0-preview/Ubuntu1804-7.3.tar

vezmete si z něj soubor:

php_pdo_sqlsrv_73_nts.so

následující příkazy nutné pouštět pod rootem

v /etc/php/7.3/mods-available vytvoříte soubor pdo_sqlsrv.ini

nano /etc/php/7.3/mods-available/pdo_sqlsrv.ini

do něj hodíte text:

extension=php_pdo_sqlsrv_73_nts.so

zjistíte cestu k php extensions:

php -i | grep extension_dir

mělo by vypsat toto:
extension_dir => /usr/lib/php/20180731 => /usr/lib/php/20180731

tam zkopírujte soubor z balíku, mělo by se tam nacházet již být více .so souborů

pak už můžu spustit příkaz, co vytvoří odkazy a tím zapne rozšíření:

phpenmod pdo_sqlsrv

nemělo by nic vypsat

rozšíření mohu kdykoli vypnout příkazem:

phpdismod pdo_sqlsrv

nutný restart php:

service php7.3-fpm restart

pdo_sqlsrv by se mělo nyní objevit v phpinfo()

sqlsrv je rozšíření odbc, takže pokud při pokusu o připojení k databázi bude hlásit chyby, nutné doinstalovat odbc knihovny:

apt install unixodbc

pokud napíše ještě tuto chybu, tak nutno doinstalovat odbc driver

SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver for SQL Server for x64: https://go.microsoft.com/fwlink/?LinkId=163712

není to standardní součást balíků, takže třeba přidat zdroje:

curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt update
apt install msodbcsql17

pro jiné OS je návod zde přímo od MS (https://docs.microsoft.com/…r-sql-server)

nyní by to mělo fungovat

v phpinfo() není nutné mít nic z odbc, pro nette stačí jen pdo_sqlsrv

ještě příklad konfigurace config.neon

database:
    testovaci:
                dsn:        'sqlsrv:Server=127.0.0.1,1433;Database=test'
                user:       'sa'
                password:   'nejakyheslo'
                options:
                        lazy: 		  yes		  # spojení se naváže až když je třeba (na prvním query)
                        autowired:    true		  # automaticky injectne v kostruktoru (nemusím psát ještě v configu)
                        debugger:     true        # panel v debugger baru
                        explain:      true        # explain dotazů v debugger bar