PHP 5.6を実行しているCentOS7.3マシンで、PDO用のMS SQLドライバーをインストールして構成しましたが、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
これをどのようにトラブルシューティングできますか?
残念ながら、MSSQL拡張機能を正しく機能させることができませんでした。ただし、PHPは [〜#〜] odbc [〜#〜]を介してMSSQLに接続できます。
$ 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接続 を指定してください。指定しない場合、接続は1つの保留中の要求のみに制限されます。