系统相关
首页 > 系统相关> > 从linux上的php连接到MS Access远程.mdb文件

从linux上的php连接到MS Access远程.mdb文件

作者:互联网

我一直在挖网上几天,阅读非常古老的信息,这导致了很老的和不存在的网站,我理解,仍然需要达到我的目标.

>我们在运行WindowsXP的服务器上有一个file.mdb,所以我需要将它添加到ODBC数据源.我这样做的步骤很简单,最后是“System 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驱动程序).

纠正我,如果我弄错了,请给我更多建议,如何实现这样的联系.

解决方法:

最后,我找到了解决方案.

>在Win服务器FreeSSHd上设置,配置连接帐户并将目录设置为一个,您需要
>在unix服务器sshfs上设置
>使用.mdb文件装入Win服务器目录

sshfs {user} @:/ {unix mount point} -o workaround = rename,allow_other
>在unix服务器mdbtools上设置

所以,我使用了docs中的默认PHP代码并编写了这个PHP脚本:

$rows = $cols = array();
if (($handle = popen('/usr/bin/mdb-export {unix mount point}/{file}.mdb {table} 2>&1', 'r')) !== FALSE) {
    while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
        $num = count($data);
        if ($row == 1) { for ($c=0; $c < $num; $c++) { $cols[] = $data[$c]; } }
        else { for ($c=0; $c < $num; $c++) { $rows[$row][$cols[$c]] = $data[$c]; } }
        $row++;
    }
    pclose($handle);
}
print_r($rows);

> /usr/bin/mdb-export的路径应该是mdb-export文件的路径(如果找不到你的话,请使用find / -name“mdb-export”).
>挂载点{unix挂载点}应该是一个空文件夹(我使用/usr/home / remotemdb)
>表{table}应该是mdb文件中的表名.使用命令mdb-tables {unix mount point} /< file> .mdb查询mdb文件中的所有可能表

不需要驱动程序,配置或其他东西,只需简单的mdbtools和文件访问,在这种情况下,通过ssh远程连接实现.在你想要的,你可以安装fuse包,自动挂载远程目录,但这是另一个问题.

希望有人帮忙.

标签:php,ms-access,odbc,jet,unixodbc
来源: https://codeday.me/bug/20190518/1128101.html