无法使用 PHP 的取消链接功能从文件夹中删除图像

问题描述 投票:0回答:1

我正在尝试执行一个 php 进程文件,在一个包含该 php 文件和其他文件(可以是图像、文本文档、pdf、其他代码文件等)的文件夹中

我需要生成一个过程来检测主要图像格式并自动删除它。

我有这个代码:

$dirPath = '.';
$files = scandir($dirPath);  
foreach ($files as $file) {
    $filePath = $dirPath . '/' . $file;
    if (is_file($filePath)) {
        //echo $file . "<br>";
        $file_parts = explode(".", $file);
        $file_extension = $file_parts[1];
        
        $image_extensions = array( "jpg", "png", "jpeg", "tiff", "webm", "jpeg", "gif" );
        
        echo "<br />Found this file: ".$file;
        foreach($image_extensions as $i_e){
            if (strcmp($file_extension, strval($i_e)) === 0) {
                chmod ($file, 0777);
                unlink($file);
                echo 'Deleted for being an image.';
            }
        }

    }
}

但永远不会删除它。文件的权限级别为 0644。 这是一个问题吗?我可以更改权限吗? 可能是另一个原因。

所有文件都在同一个文件夹中。 为什么文件没有被删除?

提前致谢。

我试图删除文件夹中的所有图像,但不起作用。

php image file unlink
1个回答
0
投票

将文件的权限设置为 644 应该不会有问题,因为所有者在 PHP 中拥有读取和写入权限。但是,请检查该文件是否属于运行 PHP 脚本的用户所有。

以下是对代码的一些调整,可能会有所帮助!

$dirPath = '.';

$files = scandir($dirPath);

$image_extensions = array("jpg", "png", "jpeg", "tiff", "webm", "jpeg", "gif");

foreach ($files as $file) {

    $filePath = $dirPath . '/' . $file;

    if (is_file($filePath)) {

        $file_parts = explode(".", $file);

        //The function strtolower() ensures case-insensitive comparison of file extensions
        //The function end() moves the internal pointer to the last element in the array
        $file_extension = strtolower(end($file_parts));
        
        if (in_array($file_extension, $image_extensions)) {
            echo "<br />Found this image file: " . $file;
            if (unlink($filePath)) {
                echo '$file has been deleted';
            } else {
                echo '$file has not been deleted';
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.