使用DirectoryIterator循环遍历D:驱动器目录

时间:2013-05-09 15:02:32

标签: php loops permissions directory

我正在尝试遍历此目录:

$path = "D:\\import\\statsummary\\";

这是我的代码:

$path = "D:\\import\\statsummary\\";
//$path = "C:\\test";
//function load_csv($path, $filename){
    if(is_null($filename)){
        header('Content-type: text/plain');
        $output = array();
        foreach (new DirectoryIterator($path) as $file){
            if($file->isFile()){
                $output[] = $i++ . " " . $file->getFileName() . "\n";
                $output[] = file($file->getPathName());
                $output[] = "\n------------\n";
            }
        }
    }

    echo implode('', $output);

当我运行此脚本时,我收到此错误:

Fatal error: Uncaught exception 'UnexpectedValueException' with message 'DirectoryIterator::__construct(D:\import\statsummary\,D:\import\statsummary\): Access is denied. (code: 5)' in C:\inetpub\wwwroot\include\file_importer.php:10
Stack trace:
#0 C:\inetpub\wwwroot\include\file_importer.php(10): DirectoryIterator->__construct('D:\import\...')
#1 {main}
  thrown in C:\inetpub\wwwroot\include\file_importer.php on line 10

但是当我将其更改为C:\驱动器上的测试目录时,它运行得很好。我甚至创建了一个用户名来按照这篇文章中的指示运行PHP:

php - Unable to connect to network share - Stack Overflow

1 个答案:

答案 0 :(得分:1)

基于DirectoryIterator class,这样的事情应该有效:

<?php
$path = "D:/import/statsummary";
$output=array();
$iterator = new DirectoryIterator(path);
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile()) {
        $filename= $fileinfo->getFilename();
        $path=$fileinfo->getPathname();
        $output[][$filename]=$path;
    }
}

print_r($output);
?>

<强>更新

由于您被拒绝访问,因此您需要将command prompt(CMD)窗口作为管理员运行。如果这是link(lnk),您可以更改链接设置中的权限。

例如,如果右键单击cmd的快捷方式选择properties,您将转到快捷方式&gt;高级&gt;以管理员身份运行。