56101
お世話になります。

MicrosoftAccess2010(32bit)のDB(.accdb)を、PHPで接続してWeb化をしようとしています。  
将来的にはXAMPPのMySqlのデータを使用するので、Accessからは切り離せるのですが、  
今まで生きていたAccessのシステムで使用していたデータはAccessにあるため、  
完全に完成して公開するまではデータベースは既存のAccessのものを転用する流れでいます。

そこで、その方法を調べていたところ、こちらのサイト様にたどり着きました。  
『<https://qiita.com/ginga_sil/items/865299fa3a899ac723d9>』  
始まって間もなくのところに、AccessとPHPを32bitで合わせないと動かないと  
書かれておりました。

ところが、現況ダウンロードできるXAMPPは64bitのものしか見当たりません(単に探し方が  
悪いだけかもしれませんが…)。そうなってしまうと、実質接続できないということに  
なってしまうのですが、あきらめるしかないのでしょうか。

ご助力をお願いいたします。
CC BY-SA 4.0
2019-06-25T23:20:55.307
56096
2020-02-22T16:29:51.197
2020-02-22T16:29:51.197
3060
9374
question
php xampp ms-access
XAMPP環境でPHPからAccessのDBに接続する方法
条件に合う？使える？性能は？費用を出せるか？等の様々な疑問はありますが、  
以下の記事の解決マークの付いていない方の回答に、こんな情報があります。

使えるなら費用を払っても良いと考えられるなら、14日間試用版で調査してみるのはどうでしょう？

[Using 32 Bit Modules with Apache 86_64 Arch (64
bit)](https://stackoverflow.com/q/11938802/9014308)  
質問：

> So I have a very unique problem.  
>  I am using php-ODBC (32 Bit) to connect to a remote ERP system. This system
> is propitiatory and ONLY provides 32 bit ODBC drivers.  
>  In order to use these drivers with PHP I MUST be using 32 bit php as well
> (unless someone knows a work around here to use 32 bit modules on PHP 86_64)  
>  This means that I also need Apache 32 bit because unfortunately to my
> knowledge there is no way to run PHP 32 bit with Apache 64 bit..  
>  Any help here would be appreciated, I tried compiling using  
>  \--with-libdir=lib32  
>  but there are an infinite number of conflicts with Libtools.
>
> 私は非常にユニークな問題を抱えています。  
>  私はphp-ODBC（32ビット）を使ってリモートERPシステムに接続しています。
> このシステムは公平で、32ビットODBCドライバのみを提供しています。  
>  これらのドライバをPHPで使用するには、32ビットのphpも使用する必要があります（PHP
> 86_64で32ビットモジュールを使用するための回避策がここにある場合を除く）。  
>  残念ながら私の知る限りではApache 64ビットでPHP 32ビットを実行する方法がないので、これは私もApache
> 32ビットを必要とすることを意味します。  
>  ここで任意の助けがいただければ幸いです、私は使ってコンパイルしてみました  
>  \--with-libdir = lib32  
>  しかしLibtoolsとの間には無限の衝突があります。

回答：

> You could use the [Easysoft ODBC-ODBC
> Bridge](https://www.easysoft.com/products/data_access/odbc_odbc_bridge/index.html#section=tab-1).  
>  With this you could install a 32-bit ODBC-ODBC Bridge server which could
> connect to your ERP 32-bit ODBC Driver and a 64-bit ODBC-ODBC Bridge client
> which can connect to the 32-bit ODBC-ODBC Bridge server.  
>  This is a commercial product where you can get a trial license. If you are
> planning on trying this contact Easysoft Support ( support@easysoft.com )
> and ask them how to set this up.  
>  Using this option would mean you could keep your defualt Apache & PHP both
> 64-bit but still access 32-bit ODBC data sources.
>
> 貴方はEasysoft ODBC-ODBC Bridgeを使用できます。  
>  これにより、ERP 32ビットODBCドライバに接続できる32ビットODBC-ODBCブリッジサーバーと、32ビットODBC-
> ODBCブリッジサーバーに接続できる64ビットODBC-ODBCブリッジクライアントをインストールできます。  
>  これはトライアルライセンスを取得できる商品です。
> あなたがこの接触を試みることを計画しているなら、Easysoftサポート（support@easysoft.com）とこれをどう設定するか彼らに尋ねてください。  
>
> このオプションを使用すると、デフォルトのApacheとPHPの両方を64ビットに保つことができますが、それでも32ビットのODBCデータソースにアクセスできます。

説明ページからいくつか抜粋すると以下の記述があります。  
[Description - ODBC-ODBC
Bridge](https://www.easysoft.com/products/data_access/odbc_odbc_bridge/index.html#section=tab-1)

> For example, Apache/PHP programs on Linux can read/write data held on MS SQL
> Server on Windows, and Perl programs can read/write data held in a MS Access
> database.
>
> たとえば、Linux上のApache / PHPプログラムは、Windows上のMS SQL
> Serverに保持されているデータを読み書きできます。Perlプログラムは、MS Accessデータベースに保持されているデータを読み書きできます。
>
> Our customers are typically using the OOB with applications and interfaces
> such as Perl, Apache/PHP, Python and C to access many Windows-only ODBC
> drivers from Unix and Linux, including:  
>  \- Microsoft SQL Server  
>  \- Microsoft Access  
>  \- Microsoft Navision  
>  \- Any other database for which an ODBC driver is available.
>
>
> 当社の顧客は通常、OOBをPerl、Apache/PHP、Python、およびCなどのアプリケーションとインターフェースと共に使用して、UNIXおよびLinuxからWindows専用の多くのODBCドライバーにアクセスしています。

図のページの最初には以下の記述の図があります。  
[Diagram - ODBC-ODBC
Bridge](https://www.easysoft.com/products/data_access/odbc_odbc_bridge/index.html#section=tab-3)

> Connect a 64-bit ODBC application to a 32-bit ODBC driver. For example,
> connect a 64-bit Windows application to a 32-bit Microsoft Access Driver
> (*.mdb).
>
> 64ビットODBCアプリケーションを32ビットODBCドライバに接続します。
> たとえば、64ビットのWindowsアプリケーションを32ビットのMicrosoft Access Driver（* .mdb）に接続します。

* * *

**追記**  
ちょっと拙速だったかもしれません。  
解決マークが付いた後ですが、主にAccessのデータベースが必要でフォーム/マクロ/ActiveX/アドイン等が少ないなら、64bitのAccessに移行するという手も考えられます。

Access 2003以前からの移行だと互換性が無いようですが、Access 2007以降ならば、32bit/64bitで互換性があるようです。  
[Microsoft Access（.mdb、.accdb）のODBC、OLEDBドライバーに関するまとめ](https://qlik-
training.ashisuto.co.jp/microsoft-access-odbc-oledb-driver/)  
[Access2003で作られたmdbファイルをAccess2016で動かしたときの不具合について](https://aimstogeek.hatenablog.com/entry/2016/07/12/090315)  
[Access2007 32bit からAccess2010
64bitへのバージョンアップ時の不具合について](https://answers.microsoft.com/ja-
jp/msoffice/forum/all/access2007-32bit-%E3%81%8B%E3%82%89access2010/9f900749-2aad-457c-8007-3eded09f9f79)

移行のノウハウとかの記事が以下にあります。  
[システム継続利用のためにAccessをバージョンアップする際の7大ポイント](https://www.ait-
labo.com/excel_access/682/)  
[ACCESSファイル32bitを64bitにコンパイルする方法はありませんか？](https://answers.microsoft.com/ja-
jp/msoffice/forum/msoffice_access-mso_winother-
mso_2010/access%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB32bit/88f966d6-1713-48e0-89de-d3b827f29a7a?auth=1)

> Accessで作成したファイルは、32-64どちらで作成しても、もう一方で利用できます。  
>  （ただし、64bitならではの命令を使った場合は一方でエラーになります。それを回避する方法は前回の書き込みのリンクに記載されています）
>
> ファイルの種類（拡張子）は何ですか？mdeやaccdeでしょうか？  
>  これらの場合は互換性がありませんので、元のmdb/accdbを64bitで開いてmde/accdeを作り直してください。  
>  互換性に問題のある機能が使われている場合も開けません。  
>
> この場合も、元のmdb/accdbで使用しているアドインやActiveXの64bit版が64bit側でインストールされていることを確認してください。（基本的にはMicrosoft製のAccess組み込み済みのActiveXは何も修正する必要はありません。）

[Office 2010 の 32 ビットバージョンと 64 ビットバージョンとの互換性](http://msdn.microsoft.com/ja-
jp/library/office/ee691831\(v=office.14\).aspx)  
[64 ビット Visual Basic for Applications の概要](https://docs.microsoft.com/ja-
jp/office/vba/language/concepts/getting-started/64-bit-visual-basic-for-
applications-overview)  
[Office 2013 の 64 ビット版](https://docs.microsoft.com/ja-jp/previous-
versions/office/office-2013-resource-kit/ee681792\(v=office.15\))
CC BY-SA 4.0
2019-06-26T02:11:05.683
56101
2019-06-26T03:25:35.800
2019-06-26T03:25:35.800
26370
26370
56096
answer