Доступ к сетевому диску в PHP с помощью Python на Win 7

Я пытаюсь получить доступ к сетевому диску с python. У меня есть базовая проверка:

if not os.access('\\\\path', os.W_OK):
print 'Not accessible'
else:
print 'Accessible'

Это работает, но когда я вызываю этот скрипт из php, он говорит: «Недоступно».

Я подумал, что проблема может быть связана с тем, что PHP не запускается под учетной записью пользователя, с которой я вошел в систему, но как мне указать пользователя с соответствующими правами?

Я вызываю скрипт на Python через exec команда:

exec('python "path-to.py"');

Я использую машину Win 7. Если я добавлю RunAs /user:username password до конца exec Команда — ничего не происходит.

1

Решение

Решение по ОП.

Поскольку PHP-скрипт не имел доступа к общему сетевому ресурсу, я решил подключить сетевой диск с помощью PHP. Для этого я использовал следующие 2 строки:

$WshNetwork = new COM("WScript.Network");
$WshNetwork->MapNetworkDrive("L:", '\\\\path', FALSE, 'domain\\username', 'password');

о котором я узнал в этой теме: ссылка на сайт (знайте, что есть две страницы)

При первом подключении через COM я получил ошибку:

Несколько подключений к серверу или общему ресурсу одним и тем же пользователем,
использование более одного имени пользователя не допускается <…>

что в основном означает, что вы уже подключены к сетевому диску. Чтобы решить это, я использовал net use команда в следующей комбинации:

net use * /delete /noconfirm
taskkill /f /IM explorer.exe
explorer.exe
net use x: \\myServer\mySHaredFolder

что я узнал здесь: ссылка на сайт

Ты можешь использовать net use Команда, чтобы увидеть, какие соединения запоминаются (= присутствует). После того, как подключения перечислены, вы затем используете либо net use /delete \\your_connection удалить соединение, которое вы хотите, или net use * /delete если вы хотите удалить все соединения. После этого вам нужно перезагрузить компьютер, но во избежание этого вы можете просто перезапустить explorer.exe сначала отключив его на консоли: taskkill /f /IM explorer.exe а затем перезапустить: explorer.exe

У меня также было несколько «мертвых ссылок», привязанных к дискам. Как удалить «мертвые ссылки» я узнал отсюда:

Тема «Как отключить« непропорциональные UNC-пути »в Windows»:
ссылка на сайт

который в основном направляет вас на очистку реестра:

  1. Бежать cmd как администратор
  2. Тип regedit
  3. Перейдите к HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\mountPoints2
  4. Удалите подозрительные записи и перезагрузите

После этого ваш проводник (мой компьютер) должен быть очищен и COM должен работать. PHP теперь может получить вывод из скрипта Python, который делает все необходимое на сетевом диске.

0

Другие решения

Других решений пока нет …