Как переименовать файлы php

PHP Rename File

Summary: in this tutorial, you will learn how to rename a file in PHP by using the rename() function.

Introduction to the PHP rename file function

To rename a file to the new one, you use the rename() function:

rename ( string $oldname , string $newname , resource $context = ? ) : boolCode language: PHP (php)

The rename() function has three parameters:

  • $oldname is the name of the file that you want to rename.
  • $newname is the new name of the file.
  • $context is a valid context resource

The rename() function returns true if the $oldname file is renamed successfully or false otherwise.

If the $oldname file and $newname has a different directory, the rename() function will move the file from the current directory to the new one and rename the file.

Note that in case the $newname file already exists, the rename() function will overwrite it by the $oldname file.

PHP rename file examples

Let’s take some examples of renaming a file in PHP

1) Simple PHP rename file example

The following example uses the rename() function to rename the readme.txt file to readme_v2.txt file in the same directory:

 $oldname = 'readme.txt'; $newname = 'readme_v2.txt'; if (rename($oldname, $newname)) < $message = sprintf( 'The file %s was renamed to %s successfully!', $oldname, $newname ); > else < $message = sprintf( 'There was an error renaming file %s', $oldname ); > echo $message; Code language: HTML, XML (xml)

2) Rename and move the file

The following example uses the rename() function to move the readme.txt to the public directory and rename it to readme_v3.txt :

 $oldname = 'readme.txt'; $newname = 'public/readme_v3.txt'; if (rename($oldname, $newname)) < $message = sprintf( 'The file %s was renamed to %s successfully!', $oldname, $newname ); > else < $message = sprintf( 'There was an error renaming file %s', $oldname ); > echo $message;Code language: HTML, XML (xml)

3) PHP rename multiple files helper function

The following example defines a function that allows you to rename multiple files. The rename_files() function renames the files that match a pattern. It replaces a substring in the filenames with a new string.

 function rename_files(string $pattern, string $search, string $replace) : array < $paths = glob($pattern); $results = []; foreach ($paths as $path) < // check if the pathname is a file if (!is_file($path)) < $results[$path] = false; continue; > // get the dir and filename $dirname = dirname($path); $filename = basename($path); // replace $search by $replace in the filename $new_path = $dirname . '/' . str_replace($search, $replace, $filename); // check if the new file exists if (file_exists($new_path)) < $results[$path] = false; continue; > // rename the file $results[$path] = rename($path, $new_path); > return $results; >Code language: HTML, XML (xml)
  • First, get the paths that match a pattern by using the glob() function. The glob() function returns an array of files (or directories) that match a pattern.
  • Second, for each path, check if it is a file before renaming.

The following uses the replace_files() function to rename all the *.md files in the pages directory to the *.html files:

 rename_files('pages/*.md', '.md', '.html');Code language: HTML, XML (xml)

Summary

Источник

rename

Пытается переименовать oldname в newname , перенося файл между директориями, если необходимо. Если newname существует, то он будет перезаписан.

Список параметров

Замечание:

Старое имя. Обёртка, используемая в oldname должна совпадать с обёрткой, используемой в newname .

Замечание: Поддержка контекста была добавлена в PHP 5.0.0. Для описания контекстов смотрите раздел Потоки.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
5.3.1 rename() теперь может переименовывать файлы между дисками в Windows.
5.0.0 rename() теперь также может быть использована с некоторыми обёртками URL. Обратитесь к Поддерживаемые протоколы и обработчики (wrappers) для получения списка обёрток, которые поддерживают rename() .
4.3.3 rename() теперь может переименовать файлы, находящиеся на другом разделе в ОС, основанных на *nix, подразумевая, что предоставлены соответствующие права на эти файлы. Могут быть сгенерировано предупреждение, если результирующая файловая система не позволяет совершать на файлах системные вызовы chown() или chmod() — например, если результирующей файловой системой является FAT.

Примеры

Пример #1 Пример использования функции rename()

Источник

Работа с файлами в PHP часть 1 (file_get_contents, file_put_contents, file_exists, unlink, rename, copy, filesize)

Язык программирования PHP имеет набор функция для работы с файлами. Рассмотрим простейшие функции для чтения, записи, удаления, перемещения, копирования, переименовывания и проверки существования файлов. В большинстве случаев, этого набора действий хватит практически для любого проекта.

Чтение файла

Функция file_get_contents читает содержимое файла в строку. Можно прочитать как содержимое файла на сайте со скриптом, так и содержимое на удалённом сервере. Рассмотрим вариант с чтением локально расположенного файла:

При выполнении этого кода на экран будет выведено содержание файла ‘mouse.txt’, который находится в той же папке, что и скрипт с кодом примера. Если необходимо указать файл в другом расположении, то нужно использовать полный путь к файлу в системе.

Если с полным путём возникнут проблемы, то можно воспользоваться адресом корневой папки сайта, который находится в переменной $_SERVER[‘DOCUMENT_ROOT’].

Тогда путь к файлу можно прописать как:
$_SERVER[‘DOCUMENT_ROOT’] . ‘/mouse.txt’

Запись файла

С помощью функции file_put_contents можно записывать данные в файл. Приведём пример её использования:

В результате выполнения этого примера, в файл ‘mouse.txt’, который находится в корневой папке сайта, будет записана строка ‘Тише, мыши, кот на крыше’. Если файла не существует, то он будет создан. Если файл уже существовал, то его содержимое будет перезаписано.

  • FILE_APPEND — заставляет функцию записывать передаваемые данные в конец файла. Используется часто для создания файлов с логами (историей каких-либо действий)
  • LOCK_EX — блокирует файл во время записи так, что никто не может прочитать или изменить его
  • FILE_USE_INCLUDE_PATH — ищет файл в подключаемых дерикториях. Этот флаг используется крайне редко

В результате выполнения такого кода, в конец файла ‘mouse.txt’ будет добавлена строчка ‘Тише, мыши, кот на крыше’. А если файла не существовало, то он будет создан.

Проверка существования файла

Функция file_exists делает проверку существования файла. Принимает единственный параметр — полный путь к файлу. Часто используется внутри условия if( ), потому что выдает true, если файл существует, и false, если файл не существует. Потому что существует

Удаление файла

Для удаления файлов в PHP используется функция unlink. Ей, как и все предыдущим функциям, передаётся абсолютный путь к файлу в системе. Приведём пример удаления файла с её помощью, но перед удалением сделаем проверку существует ли вообще файл, который собираемся удалить:

Из-за особенностей работы UNIX систем, при удалении файла функцией unlink файл будет существовать до тех пор, пока существует хотя бы одна символическая или жёсткая ссылка не него.

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

Функция rename в PHP умеет переименовывать файл или директорию. На вход она принимает два параметра: путь к файлу, который надо переименовать, и путь к файлу, который получится в результате переименовывания. Необходимо задавать полный путь:

В результате выполнения этой функции файл ‘mouse.txt’, который находится в корневой папке сайта, будет переименован в ‘/cat.txt’. Если файл ‘/cat.txt’ уже существовал. то он обязательно будет перезаписан.

Как можно догадаться, эта функция умеет не только переименовывать файлы и папки, но и перемещать их в другие директори. Для этого в новом названии надо указать новый путь. К примеру:

При выполнении такого кода файл ‘mouse.txt’ будет перемещён папку ‘/home/’. Функция rename возвращает true в случае успешного завершения переименования.

Копирование файла

Копирование файла в PHP выполняется с помощью функции copy. Которая похожа на функцию переименовывания. Она тоже принимает два параметра. Приведём пример использования:

В результате выполнения этой функции файл ‘mouse1.txt’, который находится в корневой папке сайта, будет скопирован в ‘/mouse2.txt’. Если ‘/mouse2.txt’ уже существовал, то он будет перезаписан. Функция copy возвращает true в случае успешного завершения копирования.

Определение размера файла

Иногда появляется задача определения размера файла. Эта задача решается функцией filesize. У этой функции только один параметр — полный путь к файлу. И возвращает она размер файла, указанный в байтах. Попробуем применить функцию на практике:

Источник

rename file in php

A relative path is based on the script that’s being executed ( $_SERVER[‘SCRIPT_FILENAME’] when run in web server) which is not always the file in which the file operation takes place:

// index.php include('includes/mylib.php'); // mylib.php rename('picture', 'img506.jpg'); // looks for 'picture' in ../ 

Finding a relative path involves comparing the absolute paths of both the executing script and the file you wish to operate on, e.g.:

/var/www/html/index.php /var/www/images/picture 

In this example, the relative path is: ../images/picture

You need to use either absolute or relative path (maybe better in that case). If it’s in the parent directory, try this code:

old = '..' . DIRECTORY_SEPARATOR . 'picture'; $new = '..' . DIRECTORY_SEPARATOR . 'old.jpg'; rename($old , $new); 

Like Seth and Jack mentioned, the error is appearing because the script cannot find the old file. You’re making it look in the current directory and not it’s parent.

To fix this, either enter the full path of the old file, or try this:

The ../ traverses up a single directory, in this case, the parent directory. Using ../ works in windows as well, no need to use a backslash.

If you are still getting an error after making these changes, then you may want to post your directory structure so we can all look at it.

i cant and i dont want to use fullpath. after change to thats i get error. not work for me now.` Warning: rename(«../picture», «old.jpg») [function.rename]: The system cannot find the file specified. (code: 2) in C:\xampp\htdocs\prj\change.php on line 21`

Probably you (i.e. the script at the moment where it issues the rename() command) are not in the directory you think you are (and/or where your files are). To debug, first display a list of the files in your directory:

 $d=@dir(".");// or experiment with other directories, e.g. "../files" while($e=$d->read()) < echo $e,"
"; >

Once you found the directory with the file in it, you can change into that directory and then do the rename without any path:

 chdir("../files"); // for example // here you can print again the dir.contents for debugging as above rename( "picture", "img.jpg" ); // args are: $old, $new // here you can print again the dir.contents for debugging as above 

Источник

Читайте также:  Python изменение формата даты
Оцените статью