簡體   English   中英

PHP的scandir函數問題

[英]PHP problems with scandir function

dirdel.php:

<?php
//The name of the folder.
$dir = 'images';
//Get a list of all of the file names in the folder.
$arraydir = scandir($dir, 2);
print_r($arraydir);

//Loop through the file list.
foreach ($arraydir as $key => $value) { 
unlink($arraydir[2]); 
}  
?>

數組輸出:

Array ( [0] => . 
        [1] => .. 
        [2] => ana.png 
        [3] => ban.png 
        [4] => ing.png 
        [5] => maca.png 
        [6] => no.png 
        [7] => pret.png )

警告:unlink(ana.png):第10行的C:\\ phpdesktop-chrome-57.0-rc-php-7.1.3 \\ www \\ dirdel.php中沒有此類文件或目錄

為了調查錯誤,我還嘗試了類似的方法:

require 'images/';

輸出:

警告:require(C:\\ phpdesktop-chrome-57.0-rc-php-7.1.3 \\ www \\ images):無法打開流:C:\\ phpdesktop-chrome-57.0-rc- php-7.1.3中的權限被拒絕第2行上的\\ www \\ dirdel.php

我想刪除由“ $ arraydir [2]”表示的文件“ ana.png”(該文件位於www / images中)

我已經在幾個地方搜索過,但是沒有找到任何東西可以幫助我解決此問題。

有什么解決辦法嗎?

替代方法有效,只要它們尊重數組的結構即可:

Array ( [0] => . 
        [1] => .. 
        [2] => ana.png 
        [3] => ban.png 
        [4] => ing.png 
        [5] => maca.png 
        [6] => no.png 
        [7] => pret.png )

感謝您的關注。

該文件位於images文件夾中,但是您沒有將其添加到unlink()函數參數中。

所以試試這個

unlink($dir . '/' . $arraydir[2]);

實際上,如果您運行代碼,則始終將僅取消鏈接數組的索引2。 您必須使用在foreach循環中使用的變量和引用。 我建議您嘗試以下提到的代碼:

<?php
    //The name of the folder.
    $dir = 'images';

    //Get a list of all of the file names in the folder.
    $arraydir = scandir($dir, 2);
    print_r($arraydir);

    //Loop through the file list.
    foreach ($arraydir as $key => $value) {
        if ($arraydir[$key] == 'ana.png' && file_exists($dir . DIRECTORY_SEPARATOR . $arraydir[$key])) {
            unlink($dir . DIRECTORY_SEPARATOR . $arraydir[$key]);
            break;
        } 
    }  
?>

希望這可以幫助。

首次嘗試刪除文件ana.png時,使用的路徑是相對於當前目錄的,因此找不到該文件。 導致第一個錯誤的原因。

為了解決這個問題,您應該給一個絕對路徑名,

$prefix = 'C:\\phpdesktop-chrome-57.0-rc-php-7.1.3\\www\images\\';
$filename = $prefix . $arraydir[2];
unlink($filename)

或者,將您的文件名與其目錄名$dir . '/' . $arraydir[2] $dir . '/' . $arraydir[2]

$dir = 'images'; /*Assuming your current directory is 'C:\phpdesktop-chrome-57.0-rc-php-7.1.3\www\'*/
unlink($dir . $arraydir[2]);

至於第二個錯誤,似乎您對文件夾“ C:\\ phpdesktop-chrome-57.0-rc-php-7.1.3 \\ www \\ images”沒有寫權限; 您應該更改文件和目錄權限。 我建議遵循有關在Windows 10上設置文件權限的本教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM