【发布时间】:2018-02-13 17:52:27
【问题描述】:
我无法确定我的代码有什么问题。 这行代码是删除文件而不是重命名文件。
for($i=0;$i<(7-$n);$i++){
rename($location."/".($last-$i).".txt", $location."/".($last-$i-$n).".txt");
rename($location."/".($last-$i).".bmp", $location."/".($last-$i-$n).".bmp");
}
我已经回显了源文件名和目标文件名,它看起来对我来说是正确的。 我正在用 unlink() 函数做同样的“变量沙拉”,它的行为符合预期。 我尝试制作自己的 rename() 函数:
function myRename($old, $new){
$content = printFile($old); //this function returns the content of a file.
unlink($old);
$file = fopen($new, "w");
fwrite($file,$content);
fclose($file);
}
发生同样的错误。所有重命名的文件最终都被删除。 这让我觉得我做的“可变沙拉”有一个愚蠢的错误。 但我不知道是什么。回显的结果对我来说是正确的。 PHP 没有给我任何与问题相关的警告。
回显结果:
来源:“data/directory_exemple/47.txt” 目的地:“data/directory_exemple/46.txt”
感谢您的帮助!
编辑:看起来只有一个文件被重命名。其余的被删除。 可能是逻辑错误。
【问题讨论】:
-
运行 php 脚本的用户是否对您尝试重命名文件的文件夹具有写入权限?
-
Erm,您正在尝试将
47.txt重命名为46.txt但肯定46.txt已经存在 -
@JonathanKortleven 如果他们不这样做,那么肯定什么都不会改变
-
尝试在调用
rename()之后回显您的重命名调用,看看流程是否有意义。就像echo "rename(".$location."/".($last-$i).".txt", $location."/".($last-$i-$n).".txt");";<br>你可能会发现,当你想要帕尔马大蒜味的时候,你会在沙拉中加入便便面包丁。 -
@RiggsFolly 真丢脸!我觉得你是对的!我发誓我是这么想的。但是我非常渴望尽快完成这个项目,以至于我一直坚持要在不存在的地方寻找错误。谢谢你帮助我!正如我所料,这确实是一个愚蠢的错误。
标签: php rename file-rename