2013-05-09 137 views
1

我通過這個目錄試圖循環:通過d使用DirectoryIterator循環:驅動器目錄

$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

+0

您是否嘗試過沒有結尾的斜線? – 2013-05-09 15:05:11

+0

是的,我有。我仍然得到同樣的錯誤。 – etm124 2013-05-09 15:05:52

回答

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,即可進入快捷>高級>以管理員身份運行。

+0

感謝您的回覆AbsoluteZERO,但我仍然得到相同的「訪問被拒絕」錯誤。 – etm124 2013-05-09 15:20:03