我正在尝试使用php从Linux连接到Linux上的Samba Shared文件夹

时间:2013-07-02 00:10:16

标签: php linux windows samba

我在Windows 7上安装了php,而我正在尝试连接到Linux上的Samba Shared文件夹,但没有成功。

我正在使用此代码:

// Map the drive
system('net use Y: "\\\\linuxIPaddress\Shared_folder password /user:username /persistent:no>nul 2>&1');
// Open the directory
$dir = "Y:/TMP";
if (is_dir($dir)) {
if (opendir($dir)) {
    print "able to access directory tree.";
}
} else {
print "not access tree.";
}

2 个答案:

答案 0 :(得分:1)

我找到了使用此代码进行连接的解决方案

$sharename = '\\\\LinuxIPAddress\Shared_folder';
$username = 'username';
$password = 'password';
$letter = 'Z:';    

if (!is_dir($letter . "/TMP")) {
    $WshNetwork = new COM("WScript.Network");
    $WshNetwork->MapNetworkDrive($letter, $sharename, FALSE, $username, $password);
}

并且工作正常

答案 1 :(得分:0)

这更多是评论,但我还没有足够的声誉发表评论,所以: @DanielMiovski的解决方案对我也很有用。一旦我在脚本中映射它,我就能够操纵我想要的文件。但是,我遇到了一个问题。在Windows 10上,一旦脚本结束,驱动器就不会从我的网络驱动器中删除。我无法通过资源管理器或命令提示符手动断开它,因为:“网络连接不存在。”我在互联网上搜索了很多解决方案,最后让它消失了,但是为了那些简单的事情,它花了很多功夫。我仍然想在我的脚本中使用这个代码,因为它是php的唯一实际工作的smb解决方案。我找到了解决这两个问题的方法。使用上面的@Daniel Miovski的脚本,但最后添加以下行:

system('net use Z: /delete /y');

一旦脚本完成操作,它就会删除网络驱动器。从那以后,我没有遇到过这种麻烦。

只是想我会发布这个以防其他人遇到同样的问题。