2010-10-13 4 views

ответ

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

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

+18

+1 для дружественных RTFM :) –

+0

да, хороший ответ. –

8

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

Florian S. в H. дер E. [.de] на 17-Aug-2008 09:02

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

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

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

Смежные вопросы