На машине CentOS 7.3 с PHP 5.6 я установил и настроил драйвер MS SQL для PDO, но он недоступен для PHP.
Убедитесь, что драйвер правильно установлен и настроен:
$ yum list php56w-mssql
Installed Packages
php56w-mssql.x86_64 5.6.30-1.w7 @webtatic
$ cat /etc/php.d/mssql.ini
; Enable mssql extension module
extension=mssql.so
Однако PHP этого не распознает:
$ php -i | grep 'PDO drivers'
PDO drivers => dblib, mysql, sqlite
Как я могу это устранить?
К сожалению, мне не удалось заставить расширение MS SQL работать должным образом. Тем не мение, PHP может подключаться к MS SQL через ODBC:
$ yum list php56w-odbc
Installed Packages
php56w-odbc.x86_64 5.6.30-1.w7 @webtatic
$ cat /etc/php.d/odbc.ini
extension=odbc.so
А затем в PHP:
$mssqldriver = 'ODBC Driver 13 for SQL Server';
$hostname='1.2.3.4';
$dbname='foobar';
$username='';
$password='';
$dsn = "odbc:Driver={$mssqldriver};Server={$hostname};Database={$dbname};MARS_Connection=yes";
$pdo= new PDO($dsn, $username, $password);
Обязательно укажите MARS соединение, в противном случае соединение будет ограничено только одним ожидающим запросом.