あるプロジェクトで、Accessのデータベースに保存されているデータを元にメールを自動配信するプログラムを作ることになった。データベースがMySQLとかPostgreSQLだったらPHPでちょこっとプログラムを書けばすむ。がしかし、Accessのデータベースとなると話は厄介だ。VBAでは Outlook の機能を使ってメール送信が行えるが、これでは自動化は無理だ。メール送信といえばPHPを使うほうがよいし、そうなるとデータベースはAccessではなく SQL Server を使うべきだ。今回は、PHP から SQL Server に接続したときに起こった問題を解決した経緯を説明する。
というわけで、動作環境の仕様は次のとおり。
- OS … Windows 2003 Server
- DBMS … SQL Server 2005 Express Edition
- ウェブサーバ … Apache 2.2 (XAMPP)
- PHP … PHP 5.2.5 (XAMPP)
- メールサーバ … Mercury Mail (XAMPP)
さて、PHPからデータベースをアクセスするのだから、苦もなく動作するだろうと最初は多寡をくくっていた。ところが、そうは問屋がおろさない。全くアクセスできないのである。そこで、いろいろとググってみると、Windows版PHP付属の ntwdblib.dll (Ver. 2000.2.8.0) では動かないので新しいバージョンが必要だということがわかった。そこで、それをインストールしてみたが、今度は msvcr71.dll がないので動作できないというエラーメッセージが出る。また、これもありかを探してインストール。無事、接続できた。どちらのファイルも、Windows への影響を避けるため、システムフォルダではなく、C\:xampp\php のフォルダにコピーした。
それぞれのファイルのありかは次のページである。
- ntwdblib.dll (Ver. 2000.80.2039.0) – http://www.bss-net.co.jp/dougu-qa_sql.htm
- msvcr71.dll – http://reddog.s35.xrea.com/wiki/MSVCR71.DLL.html
残念ながら、ぼくのぶつかった問題を一度に解決できるページはなかったので、ここにメモとして作成した次第だ。同じ問題に直面した方は参考にしてほしい。