2013-04-18 3 views
0

У меня есть база данных доступа, которую я хотел бы CRUD с PDO. Когда моя база данных хранится на C:\\wamp\\www\\test.accdb, я могу подключиться. Тем не менее, интересующая меня база данных хранится на нашем офисном сервере по адресу \\server1\abc\123\test.accdb. \ server1 отображается на диске z: \ на моем компьютере.PDO подключиться к .accdb по сети

Мой код выглядит следующим образом (стенографические)

<?php 
//attempt 1 
$file = "\\server1\\abc\\123\\test.accdb"; 
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb , *.accdb)};Dbq=$file"); 

//attempt 2  
$file = "Z:\\abc\123\\test.accdb"; 
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb , *.accdb)};Dbq=$file"); 
?> 

оба они дают мне сообщение об ошибке:

SQLSTATE[HY024] SQLDriverConnect: -1023 [Microsoft][ODBC Microsoft Access Driver] '(unknown)' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.

Я действительно подключен к серверу. Кто-нибудь здесь имеет какую-то мудрость поделиться?

+0

Какой пользователь работает под управлением PHP? Какая учетная запись пользователя имеет сопоставленный диск? Сопоставления с драйверами выполняются учетной записью пользователя, поэтому, если вы входите в систему как администратор и сопоставляете диск, но процесс PHP выполняется под IIS или Apache из WAMP в качестве сетевой службы или отдельной учетной записи пользователя, она не будет иметь сопоставление. Для пути UNC попробуйте использовать '$ file =" \\\\ server1 \\ abc \\ 123 \\ test.accdb ";' – dlp

+0

спасибо за ввод. "\\\\ server1 \ abc \\ 123 \\ test.accdb" не работает. Аналогичные ошибки. Кроме того, я подозревал, что эти сложности будут существовать с именем сетевого сопоставленного диска. Я бы предпочел использовать «\\ server1 ..... accdb» – GRY

+0

Последнее, что нужно попробовать: '$ file =" \\\\ server1 \\ abc \\ 123 \\ test.accdb "; $ dbh = new PDO ("odbc: Driver = {Microsoft Access Driver (* .mdb, * .accdb)}; Dbq = $ file; Uid = Admin"); ' – dlp

ответ

0

В диагностической проверке, попробуйте использовать один и тот же механизм, вы использовали, чтобы вызвать ваш PDO скрипт для вызова следующего сценария:

<?php 
$file = "\\\\server1\\abc\\123\\test.accdb"; 
if (is_file($file)) { 
    echo "File exists.\r\n"; 
} 
else { 
    echo "File does not exist.\r\n"; 
} 

Это испытает ли учетная запись, под которой скрипт работает в разрешено доступ к сети и «видеть» файл на удаленном сервере. Если это не удается, проверьте права Windows для этой учетной записи.

В качестве дополнительного теста вы можете попробовать запустить тот же скрипт из командной строки Windows, используя свою обычную учетную запись пользователя (которая, предположительно, имеет, имеет достаточные права доступа к сети).

Смежные вопросы