「教えて!ピックアップ」リリース!

こんにちは

PHPからODBC経由で.mdbファイルを操作しようとして躓いています。
OSはWindows 7 64bitで、インストールしているMS Officeは32ビット (Office 2007)ですが、MS Accessはインストールしていません(先日、MS Accessを含むOffice 最新版の試用版をインストールしたのち削除しました)。

「C:\Windows\SysWOW64」以下の「odbcad32.exe」を管理者権限で開いてシステムDSNにドライバを設定してPHPから接続を試みたのですが、エラー「IM014」が返ってきました。調べると「指定されたDNSには、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています」ということだそうです。

「C:\Windows\System32」以下の「odbcad32.exe」でドライバを設定すればよいのかと思いましたが、管理者権限で開いても指定可能なドライバが表示されません。

どういった設定をすべきでしょうか?

A 回答 (3件)

PHP_INT_SIZE で32bit版か64bit版かはわかりません。


http://www.php.net/manual/ja/language.types.inte …

一般に、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でググってみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ACCESSはインストールされていないんです。
むしろ、購入してACCESSでアプリケーションを作っちゃった方が楽な気もしてきます。

別の方法を検討します。

お礼日時:2014/07/09 17:30

PHPの32ビット版って最新版だとインストールできないんですか?


ググってみたけど、それらしい情報が無かったけど…

PHPを32ビットにできないなら、Accessをやめた方が良いかも。
もともと、Accessってあんまり信頼性は高くないし。
PostgreSQLあたりがライセンスフリーで良いかと。64ビット版ももちろんあるし。
    • good
    • 0
この回答へのお礼

面倒なところに手を出してしまった感じです。
今までPHPとMySQLでいろいろ作っていたのでMDBファイルだろうが大差ないだろうと甘く見ていました。
もともと業務用で使う社内ツールなのであんまりリソースも割けません。現在、ExcelのVBAで操作できるコードを書いてみたところ、意外に行けそうなのでこちらの方面を検討してみます。VBAは得意ではないですが、頑張ります。

お礼日時:2014/07/09 17:32

PHPが64ビット版で、ODBCドライバが32ビット版って感じなんでしょうね。


PHPを32ビット版に変えるか、ODBCドライバの64ビット版を入手するか、どちらかですね。
MDBの64ビット版ドライバってのは探してみたけど、無さそうな感じ。
32ビット版のPHPを使うしかないかな。
    • good
    • 0
この回答へのお礼

ありがとうございます。
PHPのバージョンを調べたところ、32ビットのようです。。。
「echo PHP_INT_SIZE;」で4が表示されました。。

お礼日時:2014/07/08 15:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


人気Q&Aランキング