【问题标题】:DirectoryIterator fails on Network Attached StorageDirectoryIterator 在网络附加存储上失败
【发布时间】:2015-05-18 22:36:05
【问题描述】:

这是所有迭代器中最简单的:

<!DOCTYPE html>
<html>

<head>
 <?php
  $it = new DirectoryIterator("c:");

  foreach($it as $file) 
  {
    if (!$it->isDot()) 
    {
      echo $file . "\n";
    }
  }
 ?>
</head>
<body>
 Test of directory iterator
</html>

这在我的本地 C: 驱动器上运行良好,但如果我将其更改为我的网络附加存储驱动器 (Z:),它会失败:

致命错误:未捕获异常 'UnexpectedValueException' 并带有消息 'DirectoryIterator::__construct(z:,z:):系统找不到指定的路径。 (代码:3)' 在第 8 行的 B:\public_html\test\test.php 中 ( ! ) UnexpectedValueException: DirectoryIterator::__construct(z:,z:): 系统找不到指定的路径。 (代码:3)在第 8 行的 B:\public_html\test\test.php 中

在所有其他方面,NAS 工作正常。

LocalHost 是一个带有 PHP 5 的 Apache WAMP

【问题讨论】:

  • 我稍微编辑了您的问题以清理格式并更新措辞。我添加了filesystems 标签只是为了将它与许多其他 PHP 问题区分开来。不管编辑如何,PHP 使用的底层库可能无法处理 NAS 或其他映射的驱动器位置。您可能想尝试使用网络路径(例如,\\drivename)。祝你好运!

标签: php filesystems


【解决方案1】:

看看你得到的错误信息:

致命错误:未捕获异常 'UnexpectedValueException' 并带有消息 'DirectoryIterator::__construct(z:,z:):系统找不到指定的路径。 (code: 3)' in B:\public_html\test\test.php on line 8 (!) UnexpectedValueException: DirectoryIterator::__construct(z:,z:): 系统找不到路径指定的。 (代码:3)在 B:\public_html\test\test.php 第 8 行

所以你必须将你的 c: 更改为 B:

【讨论】:

  • 嗯。我不认为这是问题所在。 B:是执行代码的位置(它是 SSD),但 z:是我尝试访问的 NAS
  • @SetiNet 如果您尝试访问:z: 为什么要写:c:?!
  • @SetiNet 现在你在写完全废话!在您的问题中,您写道它不起作用,现在它起作用了?!
  • 就像我说的。如果我在 C: 或 B: 驱动器上设置迭代器,如 $it = new DirectoryIterator("c:");它工作正常。当我在我的 NAS(驱动器 Z)上设置迭代器时:它失败了。我想我不能比这更清楚了。如果您查看错误消息,它会告诉您(至少我是这样)构造函数在 Z 上设置失败:
猜你喜欢
  • 2016-11-02
  • 1970-01-01
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 2016-08-12
  • 2021-04-07
  • 2016-12-28
相关资源
最近更新 更多