在Win7上使用Python访问PHP中的网络驱动器
我正在尝试从python访问网络驱动器共享。我有基本的支票:在Win7上使用Python访问PHP中的网络驱动器,php,python,com,share,drive,Php,Python,Com,Share,Drive,我正在尝试从python访问网络驱动器共享。我有基本的支票: if not os.access('\\\\path', os.W_OK): print 'Not accessible' else: print 'Accessible' 它可以工作,但当我从php调用该脚本时,它会说“不可访问” 我认为问题可能是由于PHP没有在我登录的用户帐户下运行,但是我如何指定具有适当权限的用户 我通过exec命令调用python脚本: exec('python "path-to.py
if not os.access('\\\\path', os.W_OK):
print 'Not accessible'
else:
print 'Accessible'
它可以工作,但当我从php调用该脚本时,它会说“不可访问”
我认为问题可能是由于PHP没有在我登录的用户帐户下运行,但是我如何指定具有适当权限的用户
我通过exec
命令调用python脚本:
exec('python "path-to.py"');
我用的是Win7机器。如果我在exec
命令的末尾添加RunAs/user:username-password
,则不会发生任何情况。解决方案由OP提供
由于PHP脚本无法访问网络共享,我决定使用PHP映射网络驱动器。为此,我使用了以下两行代码:
$WshNetwork = new COM("WScript.Network");
$WshNetwork->MapNetworkDrive("L:", '\\\\path', FALSE, 'domain\\username', 'password');
我在这篇文章中了解到:(注意有两页)
第一次使用COM连接时,我遇到错误:
同一用户与服务器或共享资源的多个连接,
不允许使用多个用户名
这基本上意味着您已经连接到网络驱动器。为了解决这个问题,我在下面的组合中使用了netuse
命令:
net use * /delete /noconfirm
taskkill /f /IM explorer.exe
explorer.exe
net use x: \\myServer\mySHaredFolder
我在这里发现:
您可以使用net use
命令查看哪些连接被记住(=存在)。列出连接后,您可以使用net use/delete\\your\u connection
删除您想要的连接,或者net use*/delete
删除所有连接。之后,您需要重新启动计算机,但为了避免重新启动,您只需先在控制台上关闭taskkill/f/IM explorer.exe,然后重新启动explorer.exe,即可重新启动explorer.exe
我还将一些“死链接”映射到驱动器。如何删除“死链接”,我从这里学到:
“如何断开Windows中未映射的UNC路径“驱动器”线程:
这基本上指导您清除注册表:
以管理员身份运行cmd
键入regedit
导航至HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\mountPoints2
删除可疑条目并重新启动
在此之后,您的浏览器(我的电脑)应该是明确的,COM应该工作。PHP现在能够从python脚本获得输出,该脚本在网络驱动器上执行任何需要的操作 通过OP解决方案
由于PHP脚本无法访问网络共享,我决定使用PHP映射网络驱动器。为此,我使用了以下两行代码:
$WshNetwork = new COM("WScript.Network");
$WshNetwork->MapNetworkDrive("L:", '\\\\path', FALSE, 'domain\\username', 'password');
我在这篇文章中了解到:(注意有两页)
第一次使用COM连接时,我遇到错误:
同一用户与服务器或共享资源的多个连接,
不允许使用多个用户名
这基本上意味着您已经连接到网络驱动器。为了解决这个问题,我在下面的组合中使用了netuse
命令:
net use * /delete /noconfirm
taskkill /f /IM explorer.exe
explorer.exe
net use x: \\myServer\mySHaredFolder
我在这里发现:
您可以使用net use
命令查看哪些连接被记住(=存在)。列出连接后,您可以使用net use/delete\\your\u connection
删除您想要的连接,或者net use*/delete
删除所有连接。之后,您需要重新启动计算机,但为了避免重新启动,您只需先在控制台上关闭taskkill/f/IM explorer.exe,然后重新启动explorer.exe,即可重新启动explorer.exe
我还将一些“死链接”映射到驱动器。如何删除“死链接”,我从这里学到:
“如何断开Windows中未映射的UNC路径“驱动器”线程:
这基本上指导您清除注册表:
以管理员身份运行cmd
键入regedit
导航至HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\mountPoints2
删除可疑条目并重新启动
在此之后,您的浏览器(我的电脑)应该是明确的,COM应该工作。PHP现在能够从python脚本获得输出,该脚本在网络驱动器上执行任何需要的操作