переименование php копирует вместо перемещения

0

У меня есть следующий код:

rename ('/original_dir/file', '/new_dir/file');

Когда код запускается, я получаю следующее сообщение:

Warning: rename(/original_dir/file,/new_dir/file): Operation not permitted

Однако файл копируется в /newdir, но не удаляется из /original_dir

Я использую переименование, чтобы оно перемещалось, а не копировалось.

У обоих /original_dir и /new_dir есть разрешения, установленные для 0777

Это должно сработать. Есть идеи?

  • 1
    есть ли original_dir и new_dir на одном устройстве?
  • 0
    да, за мой пост
Показать ещё 1 комментарий
Теги:

2 ответа

1

Вы пробовали копировать() и unlink()? Это может дать вам лучший взгляд на то, что пошло не так.

if( copy('/original_dir/file', '/new_dir/file') ) {
unlink('/original_dir/file');
}

источник

Редактирование: если сценарий вызывается из командной строки, он работает с sudo? Если он вызывается с веб-страницы, он работает, если вы измените владельца файла на apache? Получили ли вы точный код ошибки и проверьте его в man 2 rename на этот комментарий?

  • 0
    Я уже пробовал это, и это на самом деле работает, но переименование не работает. Это довольно загадочно.
  • 0
    Работает ли использование sudo (если из CL) или CHOWNing файла в apache (если из Интернета)?
1

Переименование на самом деле перемещает файл с другим именем. Как вы можете видеть из-за ошибки, эта операция не разрешена, потому что, хотя у вас есть разрешение на запись в файл, вы не можете удалить файл, если вы не являетесь его владельцем во многих дистрибутивах Linux. Вот почему ваш процесс веб-сервера копирует файл и не может удалить старый.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню