Существуют ли различия, когда я использую эти функции? Почему я должен использовать один, а не другой...
Php - Различия между копиями, переименованием и move_uploaded_file
Ответ 1
-
copy()
копирует файл - теперь у вас есть 2 файла, а для больших файлов это может занять очень много времени. -
rename()
изменяет имя файла, что может означать перемещение между каталогами. -
move_uploaded_file()
в основном совпадает сrename()
, но он будет работать только с файлами, загруженными через механизм загрузки PHP. Это функция безопасности, которая мешает пользователям обманывать ваш script, чтобы показать им данные, относящиеся к безопасности.
В будущем я предлагаю самостоятельно изучить эту информацию в Руководстве по PHP.
Ответ 2
Я нашел это в руководстве move_uploaded_file()
:
Флориан С. в Х. ан дер Э. [.de] на 17 августа 2008 г. 09:02
move_uploaded_file (в моей настройке) всегда создает файлы
0600
(rw- --- ---
) и принадлежит пользователю, работающему с веб-сервером (группа владельца AND). Несмотря на то, что каталог имеет липкий бит, установленный для групповых разрешений! Я не мог найти никаких настроек, чтобы изменить это через php.ini или даже с помощьюumask()
.Я хочу, чтобы мой обычный пользователь на сервере имел возможность
tar cjf
каталога.., который потерпит неудачу в файлах, полностью принадлежащих веб-серверу-процессу-пользователю; функцияcopy(from, to)
подчиняется липкому биту, хотя!
поэтому кажется, что copy
и rename
выполняют немного другую работу.