【问题标题】:Cannot fopen network file (via UNC path) when running PHP in IIS在 IIS 中运行 PHP 时无法打开网络文件(通过 UNC 路径)
【发布时间】:2014-09-24 21:43:38
【问题描述】:

在 IIS 中运行此代码时,我无法访问/读取位于网络共享文件夹中的文件。有问题的文件夹设置为允许所有用户。 但是,如果我通过命令提示符运行 php 脚本,它可以正常工作。 通过命令提示符执行 shell_exec('whoami') 会产生正确的用户,但是通过浏览器返回为空。

这绝对与设置适当的权限或使用正确的用户设置服务器或类似的东西有关。我对服务器了解不多,因此非常感谢任何有关如何解决此问题的帮助或任何会产生任何线索的实验。

下面是非常简单的代码(同样是IIS 2003 server PHP 5.2)

<?php 
$theFile="\\\\192.168.0.16\\geo\\junk.txt"; #network file does not works
#$theFile="junk.txt"; #local file works fine
$handle = fopen($theFile, "r");
if($handle){
    while (!feof($handle)){
        $buffer = fgets($handle);
        echo $buffer."<br />";
    }
}
?>

【问题讨论】:

  • 你确定它是“空的”吗? shell_exec 返回一个 PHP null 错误或没有从 exec 程序输出。
  • 好吧,它根本不会返回任何可见的东西。所以,如果我做 echo "-->".shell_exec('whoami')."tzhan_admin
  • 你试过用 exec 代替 shell_exec
  • var_dump(shell_exec(...)) 更好。它还会为您提供类型/尺寸信息。
  • 我明天不试了。还有什么可以帮助我调试这个问题的吗?

标签: php iis


【解决方案1】:

好吧,我们无法准确找出问题的原因,只是它是我的脚本所在服务器上的某种权限问题。解决方法是在服务器上创建另一个网站并将文件复制到那里。我们经历了我们能想到的每一个设置,但是,我们没有发现任何不同,但是,嘿,它现在正在工作。我的意思是,除了创建共享网络地址的虚拟文件夹并设置正确的密码之外,还有更多的事情要做,但主要的解决方法是在服务器上创建一个新网站,而忘掉那些令人头疼的问题旧的。希望我们在进行所有调试时没有破坏任何东西

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    相关资源
    最近更新 更多