Install SQLSRV driver on Linux, or other UTF-8 cap

2020-03-15 04:15发布

问题:

SQLSRV is the only driver for PHP that is capable of storing UTF-8 strings into two-byte columns (NVARCHAR instead of VARCHAR) which is currently maintained and supported by Microsoft for PHP 5.2.X and 5.3.X.

And I also got the link for downloading these drivers Linux SQLSRV driver download for linux but I could not configure.

If someone has got idea how to configure the sqlsrv driver on linux or has some other alternative to retrieve the data from SQL server in UTF-8 format, please share.

回答1:

Here's a wiki post from the Microsoft Community

https://github.com/Microsoft/msphpsql/wiki/Install-pdo_sqlsrv-for-PHP-7.0-on-Debian

I think the easiest route would be the php-pear route

# (1) Install PDO driver from pecl
apt-get install unixodbc-dev php7.0-dev php-pear
pecl install pdo_sqlsrv-4.0.5
echo -e "; priority=20\nextension=pdo_sqlsrv.so" > /etc/php/7.0/mods-available/pdo_sqlsrv.ini
phpenmod -v 7.0 pdo_sqlsrv


回答2:

I Googled a bit more after I read this and I may have found the answer. On Debian:

# apt-get install freetds-common freetds-bin unixodbc php5-mssql

That will install everything PHP needs for Free TDS and allows me to connect using the sqlsrv driver.



回答3:

Other UTF-8 compatible solution dblib:

  1. You install freetds and use php-mssql driver with PDO.

  2. Change encoding in /etc/freetds.conf

  3. Change charset and date format in /etc/locales.conf

I did it back in 2010.



回答4:

Please change:

echo -e "; priority=20\nextension=pdo_sqlsrv.so" > /etc/php/7.0/mods-   available/pdo_sqlsrv.ini

to:

echo -e "; priority=20\nextension=pdo_sqlsrv.so" > /etc/php/7.0/mods-available/pdo_sqlsrv.ini