15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHP7でSQLServerに接続する設定

Last updated at Posted at 2016-07-27

経緯

WindowsサーバからPHPでSQLServerに接続する時に、PHPのSQLServer用エクステンションを使用する必要がある。
以前PHP5.6からSQLServer2005に接続した時はMicroSoft公式のエクステンション(dllファイル)を使用しても認識しない問題があった。
結局その時は以下のリンク先の非公式エクステンションを使用してなんとか乗り切った。Robさんマジ感謝。
Rob's Area for PHP on Windows: Unofficial Microsoft SQL Server Driver for PHP (sqlsrv)

そして今回はPHP7からSQLServer2005へ接続する必要がでた。
上の非公式エクステンションを作成していたRobさんは「PHP7の対応はマイクロソフトが公式でリリースするよ」的なコメントを上記リンクの下の方で出している。
本番環境で使用するには、まだ涸れていない感じがプンプンするが、背は腹にかえられぬ調べて試した。

環境

Webサーバ

  • OS:Windows Server 2012R2
  • Apache:2.4.23
  • PHP:7.0.9

DBサーバ

  • SQLServer:2005(service pack2):9.00.304

結論

マイクロソフト公式のエクステンションで使用できる

Microsoft Drivers for PHP for SQL Server

PHP用のエクステンションの事。
今回調査して知ったがgit hubで公開している
PHP7用のリリースの状況を確認すると2016年1月からテスト的に公開して、2016年7月7日にリリースバージョン(4.0.6)となった模様。

必要条件の確認

マイクロソフトのダウンロードページで必要条件を確認する。

OS

  • Windows 7
  • Windows 8
  • Windows 8.1
  • Windows Server 2008 R2
  • Windows Server 2008 Service Pack 2
  • Windows Vista Service Pack 2

Windows Server 2012 R2は書いて無いが問題なかった。っていうか更新しろ。

ODBC

Version 4.0はMicrosoft ODBC11かODBC13が必要。
ODBCはWindows上でDB関連の操作をするのに必要なSDKらしい。

SQLServerバージョン対応

話は大分変わるが、SQLServerのバージョンは2種類ある。これがややこしいのでここで一度整理する。

  • 2005などの年度式
  • 9.00.304などのよく見るバージョン式

ちょいちょい調べる事があるのでここでメモ的に残しておく。公式のページ

2014

  • SQL Server 2014 RTM : 12.0.2000.80

2012

  • SQL Server 2012 Service Pack 1 : 11.00.3000.00
  • SQL Server 2012 RTM : 11.00.2100.60

2008 R2

  • SQL Server 2008 R2 Service Pack 2 : 10.50.4000.0
  • SQL Server 2008 R2 Service Pack 1 : 10.50.2500.0
  • SQL Server 2008 R2 RTM : 10.50.1600.1

2008

  • SQL Server 2008 Service Pack 3 : 10.00.5500.00
  • SQL Server 2008 Service Pack 2 : 10.00.4000.00
  • SQL Server 2008 Service Pack 1 : 10.00.2531.00
  • SQL Server 2008 RTM : 10.00.1600.22

2005

  • SQL Server 2005 Service Pack 4 : 9.00.5000.00
  • SQL Server 2005 Service Pack 3 : 9.00.4035
  • SQL Server 2005 Service Pack 2 : 9.00.3042
  • SQL Server 2005 Service Pack 1 : 9.00.2047
  • SQL Server 2005 RTM : 9.00.1399

ODBC

WindowsからSQLServerへ接続する為に必要
2種類ある。SQLServerとWindowOSのバージョンによって使用するバージョンを判断する

ODBC Driver 11

対応するWindows

  • Windows 7
  • Windows 8
  • Windows Server 2008 R2
  • Windows Server 2012
  • Windows Vista Service Pack 2

対応するSQLServer

  • SQL Server 2005
  • SQL Server 2008
  • SQL Server 2008 R2
  • SQL Server 2012
  • SQL Server 2014

ODBC Driver 13

対応するWindows

  • Windows 10
  • Windows 7
  • Windows 7 Service Pack 1
  • Windows 8
  • Windows 8.1
  • Windows Server 2008 R2
  • Windows Server 2008 R2 SP1
  • Windows Server 2012 R2

対応するSQLServer

  • SQL Server 2008
  • SQL Server 2008 R2
  • SQL Server 2012
  • SQL Server 2014
  • SQL Server 2016

今回自分はSQLServer的にODBC Driver 11を使用する

インストールと設定

確認1

phpinfo()を確認
sqlsrvが無い事を確認する

ファイルの移動

ダウンロードした以下のファイルをWebサーバへアップ

  • SQLSRV40.exe
  • msodbcsql.msi

ODBCのインストール

msodbcsql.msiを実行。
インストーラが立ち上がる。
すべてデフォルトでインストール

エクステンションの解凍

SQLSRV40.exeを実行。
解凍先を同一ディレクトリに指定して実行。
dllファイルが出来る

ファイルの移動

以前はスレッドセーフを使っていたので、今回もそれに合わせる。ここは自分の使用するものに合わせて変える。
x64のts系2つを「C:PHP\ext」に移動。

  • php_pdo_sqlsrv_7_ts_x64.dll
  • php_sqlsrv_7_ts_x64.dll

.iniファイルの更新

php.iniに以下を追加。当然dllファイル名は自分の使用するものに合わせる。

  • extension=php_sqlsrv_7_ts_x64.dll
  • extension=php_pdo_sqlsrv_7_ts_x64.dll

必要なら以下も追加

  • extension_dir = "C:\PHP\ext"

アパッチを再起動

確認2

phpinfo()を確認
sqlsrvが12個ある事を確認

sqlsrvの実行

後はPHPファイルでsqlsrv系かpdo_sqlsrv系を実装して問題無いか確認する。

以上です。ではでは。

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?