instalace pdo_sqlsrv pro php7.3 na ubuntu 18.04 – návod
- kotel
- Člen | 3
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