web-dev-qa-db-ja.com

CentOS:MS SQLドライバーがインストールおよび構成されていますが、PHP

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

これをどのようにトラブルシューティングできますか?

2
dotancohen

残念ながら、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つの保留中の要求のみに制限されます。

1
dotancohen