こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHP 5.3 から MSSQL2008接続

会社の仕事の関係でPHPのちょっとしたアプリを作成しなければならなくなってしまったのですがPHP5.3からMS SQL server 2008 への接続ができません。いろいろなサイトで確認するとsqlドライバの設定が必要だということはわかりましたが、どうもうまくいきません。
Winows2008 Server R2 SP1とMS SQL server 2008 x64環境にてPHP5.3が使用できる環境を作成する為のインストール方法が最初からわかるようなサイト又は方法をご教授いただけないでしょうか

投稿日時 - 2011-03-05 20:20:17

QNo.6570872

すぐに回答ほしいです

質問者が選んだベストアンサー

こんにちは、普段は LinuxやUnix系マシンしか使っていないので、以前ローカル開発環境にXAMPPを使ってみたときに、ちょっと込み入ったこと(extensionのbuildとか)をしようとすると、Windows は面倒だなと思ったことがあったので回答してみます。
参考になれば。

PHP 5.3 とのことで新しめの driver である 2.0 の方が良いかと思います。

さて、こちらのページはもう見られたと思いますが、「SQLSRV20.EXEのダウンロードページです」
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=80e44913-24b4-4113-8807-caae6cf2ca05&displaylang=en

システム要件に
Microsoft SQL Server 2008 R2 Native Client (available in the SQL Server 2008 R2 Feature Pack

とありますね。なにやら Feature Pack とやらがあたった クライアントがインストールされていなければならないようです。

また、以下のページは「Beginner's Guide」ですが、
http://social.technet.microsoft.com/wiki/contents/articles/whitepaper-accessing-sql-server-databases-from-php.aspx

こちらの「Using the SQLSRV Driver Loading the Driver (SQLSRV)」の章を頑張って読んでみると、

php.ini に設定する extension の部分で
extension=php_sqlsrv_53_nts_vc9.dll
このようにサンプルが書かれていますが、ここはインストールした PHPにあわせて指定しなければなりません。

今回は PHP 5.3とのことですので、
php_sqlsrv_53 までは確定ですが、Non Thread Safe なPHP(IISで動かすならこっちかな)の場合 nts です。Thread Safe の場合 ts ってのがあるのではないでしょうか?

次に、PHP For Windows のサイトの左側に
If you are using PHP with IIS you should use the VC9 versions of PHP
と書いてありますので、VC9 でコンパイルされたものを選ばなければならないようです。
(これが今も有効化はわかりません。xamppはどっちだったかな。)
以前この辺ではまりました。現在の phpinfo()からどれがインストールされているかわかると思います。

さらに、x64 とのことですから Microsoft 2008 C++ Runtime (x64) を入れておく必要もありそうです。
#でも、これはPHPを動かすために必要らしいので、すでに動いているのであればもう大丈夫なのかな?

と、ここまで書いて IIS の場合は extension=php_sqlsrv_53_nts_vc9.dll これしか選択肢がないですね。
逆にPHPは VC9 x86 Non Thread Safe をインストールする必要があるようです。

また、php_sqlsrv_53_nts_vc9.dll はPHPがインストールされたフォルダの extension のdll が置かれているフォルダに設置する(コピーする)必要があります。
#今手元に Windows環境がないので(今はMacです)、 ext とか extension とかの名前だと思います。

で、php.ini を再読込させれば良いのですが、すみません Windows の事はよく解らないので、IISのプロセスの子プロセスとなっているのであれば IIS の再起動で済むと思うのですが、FastCGIがどうとかという記述をチラッと見かけたので、その場合はPHPのプロセスが、どのようになっているか解らないので、面倒であればOSの再起動をかけっちゃってもいいかもしれません。

ふと、PHPのマイナーバージョンの違いって意識しなくていいのかなと思い、他の extension のソースに検索を掛けましたが、メジャーバージョンしか気にしてなさげでした。

ざっと読んだ感じ、注意する点はこれくらいのようです。
#僕は、PDO側のドライバを使いたいと思いました。

投稿日時 - 2011-03-06 15:19:03

補足

丁寧なご回答ありがとうございます。
ご指摘の点については一応一通り試してみました。
結局IISのインストールからやり直したらドライバのインストールができるようになりました。いろいろなサイトを見るとPHPインストール時にインストーラ無しのパッケージを使用した方が良いといったご意見を多く見た為そのようにしていたのですが、以下のような手順でSQLドライバのインストールまでできました(その後はその後でSQLの接続にて問題発生してはいますがまた別の問題ですのでとりあえず一歩は進めました)
【SQLのドライバを設定できた手順】
1.php5.3インストーラ付きパッケージを実行
2.SQL Sever Driver for PHP2.0をextフォルダに展開
3.php.iniを編集
4.IISに必要な設定を実行
3.4.については(http://guitarfish.wazure.jp/index.php?IIS%20de%20OSS%2064bit)に記載されている内容を参考にしました。

投稿日時 - 2011-03-06 21:15:36

お礼

大変ご丁寧なご回答をありがとうございます。リリースされたばかりのパッケージでの構成でしたので参考にできる情報も少なく心細いところへのご回答でした。現時点ではMicrosoftからPHP on Windowsのガイドラインサイトがあることもわかり(http://technet.microsoft.com/ja-jp/iis/gg535422)参考にできそうでちょっと安心しております。
改めてありがとうございました。

投稿日時 - 2011-03-06 21:17:52

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

なんか質問者の情報見ているとモジュールのロードできるようにphp.iniの設定を変更して
その後Webサーバの再起動をするって言う根本的な所の情報が書かれてないけど
もしかしてそんな当たり前のことは書かなくてもいいと思っているのか?それともマジでPHPの設定を
いじる上での常識すら知らないのか?(会社の環境構築をするレベルではまさかとは思うけど)

投稿日時 - 2011-03-06 13:20:24

補足

IISサービスマネージャーでの再起動ならしております。
また、OS自体の再起動もしています。

投稿日時 - 2011-03-06 15:15:23

ANo.1

まずはなにをしてどううまくいかないか書くことから
社会人としてそれすら書けないって大丈夫か?
http://www.redout.net/data/osietekun.html

投稿日時 - 2011-03-06 00:53:40

補足

結論として2008R2上でPHPからMSSQL2008x64が使用できる方法があればその通りインストールしなおすつもりでしたので詳細は割愛いたしましたが(現状環境は捨てても良いつもりでした)、現在までの状況及び不明点は以下のとおりです。

【現時点での状況】
・IIS7.5でのテストページ参照はできる
・SQL2008にテスト的にデータベースを作成するところまでできる
・ローカル上の仮想サイトにてPHPのデータベースへのアクセスを使用しない処理は可能なようである
・phpinfo()にてsqldrvが参照できない

【現在までの経緯】
・従来はxampp環境にてmysql又はMSSQL2Kへアクセスするアプリはコーディングして使用していた
・今回社内のサーバ及びOS入れ替えの為、2008R2環境でMSSQL2008を使用しなければならなくなった

【現在に至るまでに試したこと】
・IIS7.5にてPHPを使用するに当たってはxamppのようにインストールすればすぐに使用できるようにならないことがわかった。
・PHP5.3においてはハンドラーマッピングにてphp-cgi.exeの登録をしなければならないこともわかり登録した
・php-cgi.exeを登録するまでいろいろらサイトの情報を調べてisapiフィルターの登録が必要?なのではないかということでisapiのdllを探したが5.3のパッケージに見つからず5.2以前の情報か今回のやりたいこととは根本的に関係ないのではないかという判断をした
・MSDNブログ内に関係すると思われる記事を見つけ(http://blogs.msdn.com/b/osamum/archive/2010/09/27/php-ms-sql-server.aspx)「SQL Server Driver for PHP Version 1.1」や「同2.0」の設定もしてみたがphpinfo()にsqldrvの表記が現れない
・また同ブログで紹介されていた「WebPI」の使用も試みたが現在ダウンロードできるバージョンだと記載されるものとUIが変わってしまっていて使用方法が参考にできなかった
・いろいろな設定を何度もやり直しているので一度正しくクリーンな状態から設定しなければいけないのではないかという判断に至った

【結論(今回教えていただきたいこと)】
・IIS7.5環境(PHPによるDBアクセスを前提とする場合に必要な設定があればそれも含めて)にてPHP5.3をインストールする正しいステップ
・IIS7.5環境でPHP5.3からMSSQL2008x64にアクセスできるようにする為にPHPインストールする際の注意点及び必要なphp.iniの記載内容

以上となります。

【その他】
PHPに関しての書籍も探してみたのですがPHPを使用するとなるとMySQLとの記事が多く、MSSQLへの接続についてはサンプルコードの記載ばかりでMSSQL2005/2008へアクセスする際の注意事項等は見つけられませんでした。ネットでの情報もIIS環境でのPHP5.3の設定、PHP5.3からのMSSQL2008への接続方法の記載については統一的に記載されているところがみつからずこちらに質問を記載させていただきました。

投稿日時 - 2011-03-06 10:13:19

あなたにオススメの質問