У меня тоже есть проблема с удаленной базой Microsoft Access. Только удалена у меня база совсем немного. Находится она всего лишь в локальной сети, на другом компе.
На функцию odbc_connect PHP мне выдает такую ошибку:
Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][Драйвер ODBC Microsoft Access] Не удается запустить приложение. Системная база данных отсутствует или открыта с монопольным доступом другим пользователем.
Это возникает тогда, когда я у себя в винде, на своем локальном компе, в драйвере ODBC, в свойствах "Источника данных", закладка "Системный DSN", указываю, что "Системная база" (файл рабочих групп - system.mdw) находится на сетевом диске. Как только я тот же самый файл переношу на локальный диск своего компа, (где сижу сам), то все начинает работать нормально. Не могу понять, в чем дело. Подскажите, плиз! Почему-то драйвер ODBC упорно не хочет видеть файл рабочих групп на расшареном сетевом диске. А если файл сидит локально, то все пашет на ура. В чем может быть дело? Кстати, тоже самое происходит и с самой базой. В общем, чтобы odbc_connect сработала нормально, получается, что и "Файл рабочих групп" и сама база, должны находиться на локальном компе. Но я так не могу сделать. База должна остаться там, где она есть. А я должен до нее достучаться удаленно через ODBC и выложить небольшую инфу из базы в инет на страницу сайта. Не могу понять, почему не пашет. В настройках ODBC можно нормально указать все пути к удаленным файлам базы. Но после этого не пашет. На локальном компе все пашет.
На локальном компе стоит:
Операционка WinXP-SP2
Microsoft Access 97
PHP v5.2.3
ODBC v3.5
Appserver v2.5.5
На удаленном компе, стоит "двухтысячный" сервак.
Я было подумал, что может что-то с доступом не пашет и с политикой безопасности. Но я переносил базы и на обычный комп, под операционкой Win 98 и на винчестер под FAT32. Там так же не пашет. Уже весь извелся, не пойму в чем дело.
Складывается такое впечатление, что ОДБС вообще не может работать с удаленными базами. Но ведь это не так. Это должно пахать по любому. Помогите, плиииз!
-~{}~ 17.01.08 10:30:
Усе, проблема решена! Ура товарищи!
Все таки я нашел текстовку по своему вопросу:
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=251&page=560
Там самый нижний пост. Кому лень туда ломится, то вот дословный копирайт того поста:
"Как я понимаю работаем под виндаками. Нажимаем Ctrl+Alt+Del, выбираем диспетчер задач и смотрим на процесс Apache. И видим что запущен он от имени SYSTEM, а не от вашего. Так что к сетевым ресурсам дойти и не можем. Так что лечим это запуском процесса от нужного имени."
Запустил я Апач от имени пользователя и все стало пахать на ура.
Правда осталась одна засада. ODBC коннект к базе нужно расписывать вручную в программном коде таким образом:
Odbc_Connect("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=//server/work/baza/mybaza.mdb; systemdb=//server/work/baza/system.mda", "имя пользователя", "пароль") or Die("Не могу соединиться с базой");
Если все тоже самое сделать через виндовый "Администратор ODBC", то пахать все равно не будет. Администратор делает у себя пути через название дисков. То есть таким образом:
"Z:\work\baza"
а мне нужно чтобы путь был сетевой, без буквы диска, и с обратными слешами:
"//server/work/baza/"
Вот еще пример поясняющий эту новую засаду.
Имеем подключенный к компу сетевой диск "Z:\work\baza". Это полный аналог сетевого пути "//server/work/baza/"
Пишем простейший программный код в PHP на открытие удаленного каталога. Без всяких ODBC. Чтобы можно было просто проверить, пашет или не пашет:
OpenDir("Z:\work\baza"); //выдает ошибку
OpenDir("//server/work/baza/"); //ошибки нет
Вот и мой новый вопрос. Что я делаю не так? По любому нельзя будет воспользоваться виндовым "Администратором ODBC" для подключения сетевых ресурсов , или все же можно как-то? Повторюсь, засада теперь осталась лишь с правильным написание путей к сетевым ресурсам. Может за этот момент отвечает какая-то отдельная настройка самого интерфейса PHP?