我有以下代码:
重命名('/ 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
这应该有效。有什么想法吗?
答案 0 :(得分:1)
你试过一个副本()和一个unlink()吗? 它可以让你更好地了解出了什么问题。
if( copy('/original_dir/file', '/new_dir/file') ) {
unlink('/original_dir/file');
}
编辑:如果从命令行调用脚本,它是否适用于sudo
?如果从网页调用它,如果您将文件的所有者更改为apache,它是否有效?您是否获得了确切的错误代码并在man 2 rename
每this comment?
答案 1 :(得分:1)
重命名实际上是使用其他名称移动文件。正如您从错误中看到的那样,不允许该操作,因为即使您有权写入文件,如果您不是许多Linux发行版的所有者,也无法删除该文件。这就是为什么您的Web服务器进程正在复制文件,而无法删除旧文件的原因。