php - различия между копией, переименованием и перемещением_файла - PullRequest
13 голосов
/ 13 октября 2010

Есть ли различия при использовании этих функций? Почему я должен использовать один вместо другого ...

Ответы [ 2 ]

42 голосов
/ 13 октября 2010
  • copy() копирует файл - теперь у вас есть 2 файла, а для больших файлов это может занять очень много времени
  • rename() изменяет имя файла, что может означать перемещение его между каталогами.
  • move_uploaded_file() в основном совпадает с rename(), но оно будет работать только с файлами, которые были загружены с помощью механизма загрузки PHP. Это функция безопасности, которая запрещает пользователям обманывать ваш сценарий и показывать им данные, относящиеся к безопасности.

В будущем я предлагаю поискать такую ​​информацию в Руководстве по PHP .

8 голосов
/ 13 октября 2010

Я нашел это в руководстве move_uploaded_file():

Флориан С. в H. an der E. [.de] в17 августа 2008 г. 09: 02

move_uploaded_file (в моей настройке) всегда создает файлы 0600 (rw- --- ---) и принадлежит пользователю, работающему на веб-сервере (владелец AND группа)Несмотря на то, что в каталоге установлен липкий бит для прав группы!Я не могу найти какие-либо настройки, чтобы изменить это через php.ini или даже с помощью umask().

Я хочу, чтобы мой обычный пользователь на сервере мог tar cjf каталог .., который не будет работать нафайлы, полностью принадлежащие пользователю веб-сервера-процесса;хотя функция copy(from, to) подчиняется биту-липучке!

, поэтому кажется, что copy и rename выполняют немного другую работу.

...