2015-01-19 3 views
1

У меня здесь действительно странная проблема.PHP-PDO драйвер ODBC не может подключиться к MS Access MDB

Вот контекст:

У меня есть старый MS Access 97 MDB-файл, который я хотел бы использовать на внутренней веб-страницы сборки в HTML, PHP, JQuery работает на IIS.

Теперь я знаю, что драйверы odbc для php уже реализованы, но поскольку я уже использовал 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. 

Для тех, из вас, кто не говорит по-французский здесь является rought перевода:

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. 

Поскольку сообщение об ошибке довольно самоуправления объяснило, я проверил, если кто-то запирали файл .mdb, ища .ldb файл в том же но не смог найти его, поэтому я предполагаю, что .mdb не был заблокирован.

Кто-нибудь знает, почему я могу получить доступ к копии, но не оригинал? Единственное различие, которое я вижу, это каталоги там: Copy- находится в той же папке, что и проект. Реального находится на сетевом диске, IIS иметь доступ для

EDIT:

@Halayem Anis, я не использую Apache, я использую IIS, но так как ваша точка может быть действительным в любом случае я дал всем разрешение на изменение/запись/чтение/totalcontrol в файле .mdb, но все тот же код ошибки.

EDIT2:

Я использую эту строку соединения:

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

Может быть, что моя строка соединения не хорошо?

EDIT3:

Я добавил DSN в моем ODBC менеджер драйверов в IIS с именем указывающей «testDSN» в мой файл .mdb, и я дал полный контроль пользователя IIS на файл .mdb и папки . его в

Я также изменил мою строку подключения:

new \PDO('odbc:testDSN'); 

Но я все еще получаю такое же сообщение об ошибке.

ответ

0

Сообщение об ошибке может отвезти вас в неправильном направлении, пожалуйста, эти следующие шаги:

  1. Чтобы получить доступ к пути UNC с помощью Apache вы должны установить необходимые учетные данные в службе Apache (см обслуживания ** => ** Apache ** => ** LogOn)
  2. Убедитесь, что используется Apache пользователь имеет доступ для чтения/записи в файл MDB
+0

Не используя Apache, но IIS до сих пор я дал каждому разрешение доступ к файлу. Все те же сообщения об ошибке – Sebastien