php 移动文件 覆盖吗,php – 移动文件并重命名

博客内容讨论了在PHP中使用rename()函数重命名文件时遇到的权限问题。作者尝试将文件从一个目录移动到另一个目录,但遇到了权限被拒绝的情况。尽管文件和目标目录都属于同一用户www-data,重命名操作仍然失败。解决方案和可能的原因涉及到对目录的写入权限。
摘要由CSDN通过智能技术生成

想PHP的重命名将是我最好的选择.我没有看到很多关于如何在其中使用相对URL的示例,所以我有点妥协.无论哪种方式,这给了我许可否认:

我想做这个:

$file = "../data.csv";

rename("$file", "../history/newname.csv");

其中../当然会返回运行脚本的目录.我想不出办法……所以我这样做了:

$file = "data.csv";

$path = dirname(realpath("../".$file));

rename("$path/$file", "$path/history/newname.csv");

但是我被拒绝了许可(是的,历史文件夹由www-data拥有,是的,data.csv由www-data拥有).我觉得这很奇怪所以我尝试了一个简单的测试:

rename( 'tempfile.txt', 'tempfile2.txt' );

我确保www-data完全控制tempfile.txt …仍然被拒绝权限.为什么?你重命名它的文件必须存在吗?你不能像linux的mv一样重命名吗?所以我只是复制()和取消链接()?

最佳答案:

为了将文件从“../”移动到“../history/”,进程需要对“../”和“../history/”的写入权限.

在您的示例中,您显然缺少对“../”的写入权限.顺便说一下,正在移动的文件的权限是不相关的.

标签:php,copy,permissions,rename

来源: https://codeday.me/bug/20190515/1110688.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值