使用PHP访问Windows共享

时间:2009-09-18 14:38:33

标签: php authentication windows-share

我需要使用PHP访问Windows共享上的Excel文件,但似乎遇到了身份验证问题。

我正在使用PHP-ExcelReader打开并阅读该文件。在我的本地计算机上工作正常,但我正在使用它的服务器没有访问此共享的权限,因此它告诉我该路径是不可读的!

我甚至不确定访问此共享的路径是否正确:

    $file_to_include = "\\\\10.9.8.7\depts$\ExcelFile.xls";

但它可以在我的机器上运行,就像我说的那样我很满意。

我有什么方法可以在这里添加我的凭据吗?

3 个答案:

答案 0 :(得分:3)

客户端必须可以在本地访问路径\\10.9.8.7\depts$\ExcelFile.xls,因为PHP没有SMB支持。

编辑:至少不是原生,请尝试smb4php

答案 1 :(得分:0)

你的道路是正确的。

您可以尝试的一件事是在服务器上共享驱动器,然后在每台用户计算机上映射共享驱动器(确保它们都是相同的驱动器号或名称),或者只是计算机。如果不是太多,那么用户计算机会更好,以防您出门或忘记进行身份验证。这样,当用户进行身份验证时,它会打开驱动器。然后,您可以通过以下方式调用驱动器:

$file_to_include = '\\\\'.$_SERVER['REMOTE_ADDR'].'\mappedDrive\file.xls';

答案 2 :(得分:0)

您的路径是正确的,但请记住,在使用双引号时,$ amd反斜杠是php中的特殊字符。

所以您可以写:

$file_to_include = '\\10.9.8.7\depts$\ExcelFile.xls';

或者您使用双引号,但在特殊符号前添加一个额外的反斜杠

$file_to_include = "\\\\10.9.8.7\depts\\\$\\ExcelFile.xls";

或者您必须使用正斜杠作为目录分隔符,但美元仍必须转义

$file_to_include = "\\\\10.9.8.7/depts/\$/ExcelFile.xls";

关于authdata:如果您正在运行php文件,则通常会继承启动过程的权限。 这意味着什么,如果您已经在浏览器中保存了此共享的身份验证,并且正在启动php,则php文件将继承此已保存的权限。

但是请不要忘记,当您在网络服务器中运行php时,该网络服务器可能正在其他用户中运行,该用户没有与您当前登录的用户相同的权限。