我正在尝试使用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"。