Для сравнения, если файл существует в двух каталогах, вам нужно базовое имя. Использование scandir () - не лучший способ, потому что вы также получите каталоги, которые нельзя удалить, но вы должны попробовать использовать «.» и '..' всегда существуют (в * системах NIX).
Правильный путь - это итератор, который не считывает все в память, что экономит скорость и память на очень больших каталогах.
Вот пример кода, как удалить файлы, которые существуют в разных местах.
const PATH1 = 'upload_dms_file/uploads_meeting_document/';
const PATH2 = 'upload_dms_file/uploads_filing_file/';
$files1 = getFiles(PATH1);
$files2 = getFiles(PATH2);
$intersects = array_intersect($files1, $files2);
foreach($intersects as $filename) {
deleteFile(PATH1, $filename);
deleteFile(PATH2, $filename);
}
function getFiles(string $path): array
{
$files = [];
$iterator = new DirectoryIterator($path);
foreach ($iterator as $fileInfo) {
if ($fileInfo->isFile()) $files[] = $fileInfo->getFilename();
}
return $files;
}
function deleteFile($path, $filename) {
$fullpath = $path . $filename;
if(file_exists($fullpath)) unlink($fullpath);
}