Переименование имен файлов

Я использую следующий сценарий для переименования изображений в папке. При выполнении первые 2 (новых) имени не работают, поэтому в основном начинается с 3.

    function getFileExtension($filename){   
        return substr($filename, strrpos($filename, '.'));
    }
    
        
    $counter    =   1;
    
if ($handle = opendir('images')) {
    
    while (false !== ($fileName = readdir($handle))) {
        $newCounter = str_pad($counter, 3, '0', STR_PAD_LEFT);
        $prefix =   '11225';
        $newName = $prefix.$newCounter;
        rename('images/'.$fileName, 'images/'.$newName.getFileExtension($fileName));
        $counter++;
        
    }
    
    closedir($handle);

}

Вот предупреждения, которые я получаю,

Warning: rename(images/.,images/11225001.): The process cannot access the file because it is being used by another process. (code: 32) in C:\wamp\apache2\htdocs\renameimages\index.php on line 21

Warning: rename(images/..,images/11225002.): Access is denied. (code: 5) in C:\wamp\apache2\htdocs\renameimages\index.php on line 21

Что мне не хватает?

Я думаю, проблема в том, что функция вызывается внутри rename() в качестве параметра.

Robert Rocha 01.07.2018 18:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
144
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первые два - это ссылки на текущую папку и родительскую папку. Вы должны их пропустить.

if ($fileName=='.' || $filename=='..')continue;

Верный. Просто хочу добавить, если у вас есть к нему доступ, я думаю, что использование DirectoryIterator - лучший способ реализовать цикл в целом. У вас есть доступ к таким методам, как isFile, isDot, getExtension, которые в основном выполняют предлагаемую вами проверку или реализованный самим оператором синтаксического анализа расширений.

Tobias K. 01.07.2018 17:46

Другие вопросы по теме