繁体   English   中英

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

[英]php rename is copying instead of moving

我有以下代码:

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

这应该工作。 有任何想法吗?

您是否尝试过copy()和unlink()? 它可以使您更好地了解出了什么问题。

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

资源

编辑:如果脚本是从命令行调用的,它可以和sudo吗? 如果是从网页调用文件,将文件的所有者更改为apache是​​否可以正常工作? 您是否获得了确切的错误代码,并根据此注释man 2 rename对其进行了检查?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM