web-dev-qa-db-ja.com

MSSQLは非推奨になっているため、PHPでSQLSRV拡張機能を使用するにはどうすればよいですか?

PHP 5.3にアップグレードし、php_mssql.dllが欠落していることに気付きました。少しグーグルした後、5.3がmssqlのサポートを終了したようです。そのため、Microsoftからドライバーをダウンロードしましたが、それが機能するようには思われない。

私は窓の上にいます。私のPHP 5.3?

23
user187809

引用 http://php.net/manual/en/intro.mssql.php

MSSQL拡張は、PHP 5.3以降のWindowsでは使用できなくなりました。 MS SQLの代替ドライバーであるSQLSRVは、Microsoftから入手できます。" http://msdn.Microsoft.com/en-us/sqlserver/ff657782.aspx

ダウンロードしたら、次のページの指示に従ってください。

一言で言えば:

PHP拡張ディレクトリにドライバーファイルを配置します。
php.iniファイルを変更して、ドライバーを含めます。例えば:

extension=php_sqlsrv_53_nts_vc9.dll  

Webサーバーを再起動します。

関連項目(そのページからコピー)

SQLSRV拡張機能のPHPマニュアルは http://php.net/manual/en/sqlsrv.installation.php にあり、インストールに関する次の情報を提供しています。

SQLSRV拡張機能を有効にするには、適切なDLLファイルをPHP拡張ディレクトリに追加し、対応するエントリをphp.iniファイルに追加します。 SQLSRVのダウンロードには、いくつかのドライバーファイルが付属しています。使用するドライバーファイルは、使用するPHPバージョン、スレッドセーフまたは非スレッドセーフPHPのいずれを使用しているか、およびPHPインストールがVC6またはVC9コンパイラ。たとえば、PHP 5.3を実行していて、スレッドセーフでないPHPを使用しており、PHPインストールがVC9コンパイラーでコンパイルされている場合、php_sqlsrv_53_nts_vc9.dllファイルを使用する必要があります。 (WebサーバーとしてIISを使用している場合は、VC9コンパイラーでコンパイルされた非スレッドセーフバージョンを使用する必要があります)。 PHP 5.2を実行していて、スレッドセーフPHPを使用しており、PHPインストールがVC6コンパイラーでコンパイルされている場合、php_sqlsrv_52_ts_vc6.dllファイルを使用する必要があります。

ドライバー PDOでも使用可能

37
Gordon

ダウンロード MicrosoftドライバーPHP for SQL Server 。ファイルを抽出し、次のいずれかを使用します。

File                             Thread Safe         VC Bulid
php_sqlsrv_53_nts_vc6.dll           No                  VC6
php_sqlsrv_53_nts_vc9.dll           No                  VC9
php_sqlsrv_53_ts_vc6.dll            Yes                 VC6
php_sqlsrv_53_ts_vc9.dll            Yes                 VC9

Phpinfo()でスレッドセーフステータスを確認できます。

Extファイルに正しいファイルを追加し、php.iniに次の行を追加します。

extension=php_sqlsrv_53_*_vc*.dll

使用したファイルのファイル名を使用します。

Gordonがすでに投稿しているように、これはMicrosoftの新しい拡張機能であり、mssql_ *の代わりにsqlsrv_ * APIを使用します

更新:
Linuxでは、必要なドライバーもSQLSERV拡張機能もありません。
この説明については、 PHP on Linux? からMS SQL Serverに接続します)==をご覧ください。

要するに、FreeTDSをインストールする必要があります はい、mssql_ *関数を使用する必要があります Linuxで。 更新2を参照

長期的に物事を単純化するために、どの拡張機能がロードされるかに基づいて適切なAPI(sqlsrv_ *またはmssql_ *)を使用する必要な関数を持つラッパークラスを作成することをお勧めします。

Update 2:Linuxではmssql_ *関数を使用する必要はありません。 PDO + ODBC + FreeTDSを使用してms SQLサーバーに接続できます。Windowsでは、接続に最適な実行方法はPDO + ODBC + SQL Native PDO + SQLSRVドライバーは非常に遅いため、クライアント。

5
danishgoel