У меня есть следующий код:
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
Это должно сработать. Есть идеи?
Вы пробовали копировать() и unlink()? Это может дать вам лучший взгляд на то, что пошло не так.
if( copy('/original_dir/file', '/new_dir/file') ) {
unlink('/original_dir/file');
}
Редактирование: если сценарий вызывается из командной строки, он работает с sudo
? Если он вызывается с веб-страницы, он работает, если вы измените владельца файла на apache? Получили ли вы точный код ошибки и проверьте его в man 2 rename
на этот комментарий?
Переименование на самом деле перемещает файл с другим именем. Как вы можете видеть из-за ошибки, эта операция не разрешена, потому что, хотя у вас есть разрешение на запись в файл, вы не можете удалить файл, если вы не являетесь его владельцем во многих дистрибутивах Linux. Вот почему ваш процесс веб-сервера копирует файл и не может удалить старый.