如何使用PHP删除目录中的文件


How to delete a file in a directory using PHP?

我正在尝试使用PHP从目录中删除给定的文件。这是我尝试过的代码:

// Get the file name
$id = '61514';
// Get the folder path
$uploads_folder_dir = 'some/dir';
// Check if the directory exists
if ( ! file_exists( $uploads_folder_dir ) )
    return false;
// Open the directory
if ( $dir = opendir( $uploads_folder_dir ) ) {
    // Loop through each file in the directory
    while ( false !== ( $file = readdir( $dir ) ) ) {
        // Target the file to be deleted and delete. All files in folder are .png
        if ( $file == ( $id . '.png' ) )
            @unlink( $uploads_folder_dir . '/' . $file );
    }
}
// Housekeeping
closedir( $dir );
@rmdir( $uploads_folder_dir );

每次运行代码时,我试图删除的特定文件都不会被删除。

我的猜测是,当我在目录中循环时,我查找文件的逻辑不起作用。我可以确认文件61514.png肯定在目录some/dir

希望有人能发现我哪里错了?

首先通过打印整个文件路径(如)来调试文件路径是否正常

// Target the file to be deleted and delete. All files in folder are .png
        if ( $file == ( $id . '.png' ) ){
             echo $uploads_folder_dir . '/' . $file; die;
             @unlink( $uploads_folder_dir . '/' . $file );
        }
    }

为什么要在文件中循环?这个会容易得多:

// Get the file name
$id = '61514';
// Get the folder path
$uploads_folder_dir = 'some/dir';
// Check if the directory exists
if ( ! file_exists( $uploads_folder_dir ) )
    return false;
unlink("$uploads_folder_dir/$id.png");
// Housekeeping
@rmdir( $uploads_folder_dir );

@unlink->使用unlink,如果您没有看到权限被拒绝的问题,则应该删除文件和"dir"。