在 Linux 上从 php 连接到 MS Access 远程 .mdb 文件
我已经在互联网上挖掘了几天,阅读了非常古老的信息,这导致了非常古老且不存在的网站,但我仍然明白,实现我的目标需要什么。
- 我们在运行 WindowsXP 的服务器上有一个 file.mdb,因此我需要将其添加到 ODBC 数据源。我通过简单的步骤做到了这一点,最终得到“系统 DSN”,它允许访问 .mdb 文件,
- 我需要在同一台服务器上安装某种 ODBC 桥,这将允许我创建到该服务器的远程连接,使得该桥连接到服务器 ODBC DSN,并查询我的东西(找不到任何免费的 ODBC 桥)
- 在 UNIX (FreeBSD) 计算机上,我需要安装 unixODBC 和 php5-odbc 包,启用与 ODBC 的连接(已安装)
- 要连接到远程 ODBC 并使用 MS Access 数据库驱动程序,我需要在 .so 文件中拥有这样一个用于 unixODBC 的驱动程序,该驱动程序位于 UNIX 计算机内(无法找到任何免费的 MS Access 驱动程序)
- 使用 PHP odbc_connect 连接到该服务器(DSN,用户,密码),在DSN中我需要提供一些连接信息和驱动程序,我需要使用它们(MS Access驱动程序)。
纠正我,如果我错了,请给我更多建议,如何实现这样的连接。
I have been digging internet for couple days, reading very old information, that leads to very old and nonexisting sites, still, I understood, what is needed to achieve my goal.
- We have a file.mdb on server running WindowsXP, so I need to add it to ODBC data sources. I do that with simple steps, ending up with "System DSN", that allows access to that .mdb file
- I need to install on this same server some sort of ODBC bridge, that would allow me to create remote connection to this server, making that bridge connect to servers ODBC DSN, and query out my stuff (could not find any free ODBC bridge)
- On UNIX (FreeBSD) machine, I need to install unixODBC and php5-odbc packages, enabling connections to ODBC (already installed)
- To connect to remote ODBC and use MS Access db driver, I need to have such a driver for unixODBC, in .so file, that is sitting inside UNIX machine (could not find any free MS Access drivers)
- Connect to that server using PHP odbc_connect(DSN,user,password), and in DSN I need to give some connection information and driver, which I need to use (MS Access driver).
Correct me, if I'm mistaken and please give me more advice, how to achieve such a connection.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
最后,我找到了解决方案。
使用.mdb文件挂载Win服务器目录< /p>
sshfs {user}@:/ {unix 挂载点} -o workaround=rename,allow_other
在unix服务器上设置mdbtools
因此,我使用了文档中的默认PHP代码并编写了这个PHP脚本:
find / -name "mdb-export"
)找不到你的)。mdb-tables {unix mount point}/.mdb
查询 mdb 文件内所有可能的表不需要驱动程序、配置或其他东西,只需简单的 mdbtools 和对文件的访问,本例中是通过ssh远程连接来实现的。如果你愿意,你可以安装fuse包,来自动挂载远程目录,但这是另一个问题。
希望有人能帮上忙。
Finally, I found solution.
Mount Win server directory with .mdb files
sshfs {user}@:/ {unix mount point} -o workaround=rename,allow_other
Set up on unix server mdbtools
So, I used default PHP code from docs and write this PHP script:
find / -name "mdb-export"
, if you can't find yours).mdb-tables {unix mount point}/<file>.mdb
There is no need for drivers, configuration or other stuff, just plain mdbtools and access to file, in this case, achieved with remote connection through ssh. In you want, you can install fuse package, to autmatically mount remote directory, but that is another question.
Hope someone this helps.
您没有连接到“服务器 dsn”。 DSN 仅是本地事物。它们根本不暴露于远程连接。如果您希望计算机连接到数据库,则需要在该计算机上配置 DSN - 您将无法使用其他地方指定的 DSN。
对于 PHP ODBC,那就是
You don't connect to a "server dsn". DSN's are a local thing only. They're not exposed for remote connections at all. If you want a machine to connect to a database, you need to have a DSN configured on that machine - you won't be able to use a DSN specified elsewhere.
For PHP ODBC, that'd be
您是正确的,因为您需要 ODBC 到 ODBC 桥。
在 OpenLINK 中,我们引用了 多层 ODBC 到 ODBC 桥...
这是多层,因为它具有如下所示的客户端/服务器架构 --
Linux 客户端 --
ODBC应用程序
OpenLink 通用 ODBC 驱动程序
Windows Server --
32 位 OpenLink 请求代理
32 位 OpenLink ODBC 代理
32 位 Microsoft Access ODBC 驱动程序(带有预配置的 DSN)
Microsoft Access 数据库文件。
You are correct insomuch that you require an ODBC to ODBC Bridge.
At OpenLInk we refer to a Multi-tier ODBC to ODBC Bridge...
This is Multi-tier in the sense that it has a client/server architecture as follows --
Linux Client --
ODBC Application
OpenLink Generic ODBC Driver
Windows Server --
32bit OpenLink request Broker
32bit OpenLink ODBC Agent
32bit Microsoft Access ODBC Driver (with pre configured DSN)
Microsoft Access Database file.
它是商业的,所以可能不感兴趣,但 Easysoft 有一个用于 Access 的 ODBC 驱动程序,可在大多数 *nix 上使用。不需要桥。目前 FreeBSD 上还没有构建版本,但如果您有兴趣的话,我可以在周一为您构建一个版本。
有一些开源 MDB 工具可能足以满足您的需求,但它缺乏很多功能。
Easysoft Access ODBC 驱动程序
MDB 工具
Its commercial, so possibly not of interest, but Easysoft have an ODBC driver for Access that's available on Most *nix's. No bridge required. There isn't a build on FreeBSD at the moment, but I could get one built for you on Monday if it's of any interest.
There is the open source MDB tools that may have enough for what you want, but it is lacking in quite a lot of functionality.
Easysoft Access ODBC Driver
MDB tools
将 PDO 与 MDBTools 结合使用:
安装:
apt-get install libodbc1
apt-get install libmdbodbc1
apt-get install php5-odbc
(重新启动 apache)
示例:
Use PDO with MDBTools:
install:
apt-get install libodbc1
apt-get install libmdbodbc1
apt-get install php5-odbc
(restart apache)
Sample: