我需要使用PHP访问Windows共享上的Excel文件,但似乎遇到了身份验证问题。
我正在使用PHP-ExcelReader打开并阅读该文件。在我的本地计算机上工作正常,但我正在使用它的服务器没有访问此共享的权限,因此它告诉我该路径是不可读的!
我甚至不确定访问此共享的路径是否正确:
$file_to_include = "\\\\10.9.8.7\depts$\ExcelFile.xls";
但它可以在我的机器上运行,就像我说的那样我很满意。
我有什么方法可以在这里添加我的凭据吗?
答案 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时,该网络服务器可能正在其他用户中运行,该用户没有与您当前登录的用户相同的权限。