PHP rename () из / tmp выдает предупреждение, хотя на самом деле работает

Перемещение файлов из /tmp Дир, я получаю предупреждение:

переименовать (/ tmp / [somefile], [destination]): операция не разрешена в […]

Есть три странные вещи с этим:

  1. Оба файла в /tmp и [destination] каталог принадлежит www процесс (от имени которого выполняется операция) и иметь разрешение владельца на запись.
  2. Файлы фактически заканчиваются перемещением!
  3. Перемещение файлов по другим каталогам, выполненное таким же образом, работает нормально.

Другими словами, это на самом деле работает, но выдает предупреждение, как нет. Довольно странно для меня.

В чем может быть причина такого поведения?

1

Решение

Переименование должно быть атомной операцией; То есть, никогда не бывает времени, когда существуют как старые, так и новые имена файлов или их нет. / tmp — это обычно отдельная файловая система на серверах Linux. Я предполагаю, что вы получаете предупреждение, потому что движение не атомарное (потому что оно происходит между двумя различными файловыми системами), даже если оно работает. Так что это, вероятно, ближе к копии, за которой следует удаление, а не перемещение в одну файловую систему.

Пример аналогичной проблемы: https://ubuntuforums.org/showthread.php?t=1272466

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector