在Win7上使用Python访问PHP中的网络驱动器

在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

我正在尝试从python访问网络驱动器共享。我有基本的支票:

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脚本获得输出,该脚本在网络驱动器上执行任何需要的操作