1

所以我想要做的核心事情是从同一网络上的其他设备获取磁盘空间。

为此,我使用 PHP 函数disk_total_space()。我正在使用连接字符串\\192.168.0.1\c$

所以总的来说我会:

disk_total_space('\\\\192.168.0.1\\c$');

但是,我对这个连接字符串有一些疑问,首先是:

  1. 这个“URL”使用什么协议连接?
  2. 为什么在驱动程序末尾需要一个 $ ?

现在我还需要用我的连接字符串提供用户名和密码。但是我不知道如何将它与我拥有的连接字符串融合在一起。我尝试使用 FTP 协议和 HTTPS 协议提供用户名和密码,但似乎都不起作用。

https:\\\\username:password@\\\\192.168.0.1\\c$
ftp:\\\\username:password@\\\\192.168.0.1\\c$

您可能会注意到我是这些协议的新手,所以我希望任何人都可以向我解释这一点。

4

1 回答 1

3

我对php一无所知,但似乎回答这个问题你不需要php知识......希望这会有所帮助:

1. 这个“url”用什么协议连接?

这称为UNC 路径从wiki查看更多详细信息:路径(计算)

引用:

A UNC path describes the location of a volume, directory, or file. The format for a UNC path is \\server\volume\directory\file and is not case-sensitive.

2. 为什么驱动后面要加$?

隐藏共享的$代表,从Microsoft 知识库中查看更多信息

3. 对于您的最后一个问题,“在 UNC 路径中传递 UNC 用户名和密码”

SuperUser上有一个类似问题的答案。

引用@grawity 的回答

在 Windows 上,您不能将凭据放在 UNC 路径中。您必须使用 、 或在 Windows 询问时提供net use它们runas /netonly。(如果您有一定的编程技能,可以使用 将 SMB 密码存储为“域凭据” CredWrite(),相当于选中 Windows 中的“记住密码”框。)

在 Linux 上,这取决于程序。

  • GNOME 的 Gvfs 接受该user@host语法,但似乎完全忽略了密码。(但是,您可以预先将其存储在 GNOME Keyring 中。)

  • smbclient使用与 Windows 相同的 UNC 语法;但是,它有一个--authentication-file可以读取凭据的选项。

  • 上面两个程序都使用libsmbclient,并且可以使用 Kerberos 身份验证而不是密码:运行kinit user@YOUR.DOMAIN和使用smbclient -k //host/share。这比密码验证更安全。

请注意,不推荐将密码放入 URI 中,并且您不应依赖它在任何地方都受支持。

于 2013-11-01T09:58:14.057 回答