- ベストアンサー
Win7 64bit: ODBC経由でMDB接続不可
- Windows 7 64bitでのODBCを使用したMDB接続ができない問題について
- Windows 7 64bitでMS Officeを32ビットでインストールしており、先日試用版をインストールしたMS Accessを削除したが、ODBC経由で.mdbファイルを操作できない
- システムDSNにドライバを設定し、PHPから接続を試みたが、エラー「IM014」が発生し、ドライバとアプリケーションのアーキテクチャの不一致とされる
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
PHP_INT_SIZE で32bit版か64bit版かはわかりません。 http://www.php.net/manual/ja/language.types.integer.php 一般に、64bitOSにPHPの32bit版は入らないはず。 古いバージョンでは入りますが、最新版はダメです。 タスクマネージャでphp.exeを見て*がなければ64bitです。 大原則として、64bitプロセス空間には64bitのDLLしか ロードできません。同じく32bitプロセスには32bitのDLL しかロードできません。ODBCがDLL実装(これが大半)で あれば32bit版のODBCを64bitPHPで扱うことはできません。 プロセス間通信を使って、異なるプロセスでODBCを稼動 させ、データを通信により受け渡します。プロセスが違う ので、64bit/32bitの壁をスルーできます。但し、これを実装 するには独自にPHPエクステンションを作るか、exe型の COMモデルを使うしかないと思います。 私は前者は開発した経験がありますが、後者は経験が ありません。PHPエクステンションの開発は非常に難しく、 Windowsのプロセスにやスレッドに関する技術、PHPの データ管理法、DLLとのインターフェースなどの知識が 無いと作れません。 また、exe型のCOMモデルは非常に少なく、Office系での 実装しか見たことがありません。 Accessがインストールされていれば、とりあえず、COM オブジェクトでAccess.Applicationをインスタンス化して 操作を試みます。成功すれば何とかなると思います。 PHPとCOMでググってみてください。
その他の回答 (2)
- kawais070
- ベストアンサー率52% (2242/4283)
PHPの32ビット版って最新版だとインストールできないんですか? ググってみたけど、それらしい情報が無かったけど… PHPを32ビットにできないなら、Accessをやめた方が良いかも。 もともと、Accessってあんまり信頼性は高くないし。 PostgreSQLあたりがライセンスフリーで良いかと。64ビット版ももちろんあるし。
お礼
面倒なところに手を出してしまった感じです。 今までPHPとMySQLでいろいろ作っていたのでMDBファイルだろうが大差ないだろうと甘く見ていました。 もともと業務用で使う社内ツールなのであんまりリソースも割けません。現在、ExcelのVBAで操作できるコードを書いてみたところ、意外に行けそうなのでこちらの方面を検討してみます。VBAは得意ではないですが、頑張ります。
- kawais070
- ベストアンサー率52% (2242/4283)
PHPが64ビット版で、ODBCドライバが32ビット版って感じなんでしょうね。 PHPを32ビット版に変えるか、ODBCドライバの64ビット版を入手するか、どちらかですね。 MDBの64ビット版ドライバってのは探してみたけど、無さそうな感じ。 32ビット版のPHPを使うしかないかな。
お礼
ありがとうございます。 PHPのバージョンを調べたところ、32ビットのようです。。。 「echo PHP_INT_SIZE;」で4が表示されました。。
お礼
ありがとうございます。 ACCESSはインストールされていないんです。 むしろ、購入してACCESSでアプリケーションを作っちゃった方が楽な気もしてきます。 別の方法を検討します。