php重命名是复制而不是移动

时间:2014-11-18 22:43:56

标签: php

我有以下代码:

重命名('/ 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

这应该有效。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你试过一个副本()和一个unlink()吗? 它可以让你更好地了解出了什么问题。

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

source

编辑:如果从命令行调用脚本,它是否适用于sudo?如果从网页调用它,如果您将文件的所有者更改为apache,它是否有效?您是否获得了确切的错误代码并在man 2 renamethis comment

中进行了检查

答案 1 :(得分:1)

重命名实际上是使用其他名称移动文件。正如您从错误中看到的那样,不允许该操作,因为即使您有权写入文件,如果您不是许多Linux发行版的所有者,也无法删除该文件。这就是为什么您的Web服务器进程正在复制文件,而无法删除旧文件的原因。