我正在尝试从python访问网络驱动器共享。我有基本的检查:
if not os.access('\\\\path', os.W_OK):
print 'Not accessible'
else:
print 'Accessible'
它有效,但当我从php调用该脚本时,它表示“无法访问”#。
我认为问题可能是因为PHP不在我登录的用户帐户下运行,但是如何指定具有适当权限的用户?
我通过exec
命令调用python脚本:
exec('python "path-to.py"');
我正在使用Win 7机器。如果我将RunAs /user:username password
添加到exec
命令的末尾 - 没有任何反应。
答案 0 :(得分:0)
OP解决方案。
由于PHP脚本无法访问网络共享,因此我决定使用PHP映射网络驱动器。为此,我使用了以下两行:
$WshNetwork = new COM("WScript.Network");
$WshNetwork->MapNetworkDrive("L:", '\\\\path', FALSE, 'domain\\username', 'password');
我在这个帖子上学到了:link(请注意有两页)
第一次使用COM连接时,出现错误:
同一用户与服务器或共享资源的多个连接, 不允许使用多个用户名< ...>
这基本上意味着您已经连接到网络驱动器。为了解决这个问题,我在以下组合中使用了net use
命令:
net use * /delete /noconfirm
taskkill /f /IM explorer.exe
explorer.exe
net use x: \\myServer\mySHaredFolder
我在这里发现:link
您可以使用net use
命令查看记住哪些连接(=存在)。列出连接后,您可以使用net use /delete \\your_connection
删除所需的连接,或使用net use * /delete
删除所有连接。之后,您需要重新启动计算机,但为了避免这样做,您只需首先在控制台上关闭explorer.exe
,然后重新启动:taskkill /f /IM explorer.exe
我还有一些映射到驱动器的“死链接”。如何删除我从这里学到的“死链接”:
如何在Windows主题中断开未映射的UNC路径“驱动器”: link
基本上指示您清除注册表:
cmd
regedit
HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\mountPoints2
之后,您的资源管理器(我的电脑)应该清晰,COM应该可以工作。 PHP现在能够从python脚本获取输出,该脚本执行网络驱动器上所需的任何操作。