PHP-PDO ODBC 驱动程序无法连接到 MS Access MDB


PHP-PDO ODBC driver can't connect to MS Access MDB

我在这里遇到了一个非常奇怪的问题。

以下是上下文:

我有一个旧的MS Access 97 .mdb文件,我想在IIS上运行的HTML,PHP,JQuery的内部网页上使用。

现在我知道 php 的 odbc 驱动程序已经实现,但由于我已经在链接到它的其他一些页面中使用了 PDO,我决定我也将 PDO 用于这个项目。

因此,在启用扩展和所有 PDO odbc 驱动程序正常工作后,我将.mdb文件并将其命名为 DBcopy.mdb 复制到项目文件夹中。

我编写了代码并执行了一些测试(以确保一切按预期工作),一切似乎都很好。

比我将.mdb的路径更改为//myothernetworkdrive/somedirectory/DBreal.mdb这是"真实".mdb文件所在的位置,突然我收到以下消息:

SQLSTATE[HY000] SQLDriverConnect: -1032 [Microsoft][Pilote ODBC Microsoft Access] Le moteur de la base de données Microsoft Jet ne peut pas ouvrir le fichier '(Inconnu)'. Il est déjà ouvert en mode exclusif par un autre utilisateur, ou vous devez avoir l'autorisation de visualiser ses données.

对于那些不会说法语的人,这里有一个粗略的翻译:

SQLSTATE[HY000] SQLDriverConnect: -1032 [Microsoft][ODBC Drivers Microsoft Access] Microsoft Jet can't open file '(Inconnu)'. It is already open in exclusive mode by another user, or you need permission to access these data.

由于错误消息是自我解释的,我检查是否有人通过在同一目录中查找 .ldb 文件来锁定.mdb文件,但找不到,所以我假设.mdb没有锁定。

有谁知道为什么我可以访问副本而不是原件?我能看到的唯一区别是那里的目录:复制 - 与项目位于同一文件夹中。真实 - 位于 IIS 有权访问的网络驱动器上

编辑:

@Halayem 阿尼斯,我不使用 Apache,我使用的是 IIS,但由于您的观点无论如何都可能有效,我允许每个人更改/写入/读取/总控制.mdb文件,但仍然使用相同的错误代码。

编辑2:

我正在使用这个连接字符串:

new 'PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=''''myothernetworkdrive''somedirectory''DBreal.mdb; UID=Admin; PWD=;");

可能是我的连接字符串不好吗?

编辑3:

我在 IIS 的 ODBC 驱动程序管理器中添加了一个 DSN,名称为"testDSN",指向我的.mdb文件,并让 IIS 用户完全控制.mdb文件及其所在的文件夹。

我还将连接字符串更改为:

new 'PDO('odbc:testDSN');

但我仍然收到相同的错误消息。

错误消息可能会以错误的方式驱动您,请执行以下步骤:

  1. 要通过 Apache 访问 UNC Path,您必须在 Apache 服务中设置所需的凭据(请参阅服务 **=>** Apache **=>** 登录)
  2. 验证 Apache 使用的用户是否有权读取/写入您的 MDB 文件