5

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

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

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

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

但它可以在我的机器上运行,正如我所说的,我对此很满意。

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

4

3 回答 3

3

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

编辑:至少不是本机,尝试smb4php

于 2009-09-18T14:42:15.943 回答
0

你的路径是正确的。

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

$file_to_include = '\\\\'.$_SERVER['REMOTE_ADDR'].'\mappedDrive\file.xls';
于 2009-10-09T22:54:40.297 回答
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 时,该网络服务器可能在不同的用户中运行,该用户与您当前登录的用户没有相同的权限。

于 2019-09-08T10:26:46.793 回答