所以我试图在php中使用重命名功能.
在第一次尝试时,如果目标文件夹为空或者不包含与源文件夹同名的任何目录,则重命名功能可以正常工作.但是,如果存在相同的目录名,则会失败.我想要的只是覆盖它,我认为重命名()就足够了.
这是我的代码:
/**
* Move temp folders to their permanent places
*
* $module_folder = example (violator, pnp, etc)
* $folders = name of folders within module_folder
**/
public function move_temp_to_permanent($module_folder, $folders){
$bool = false;
$module_folder_path = realpath(APPPATH . '../public/resources/temps/' . $module_folder);
$module_folder_destination_path = $_SERVER['DOCUMENT_ROOT'] . '/ssmis/public/resources/photos/' . $module_folder . '/';
foreach($folders as $folder){
$bool = rename($module_folder_path . '/' . $folder, $module_folder_destination_path . $folder);
}
return $bool;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给我一个错误说:
消息:重命名(C:\ xampp\htdocs\ssmis\public\resources\temps\violator/SJ-VIOL-2015-0002,C:/ xampp/htdocs/ssmis/public/resources/photos/violator/SJ-VIOL- 2015-0002):访问被拒绝.(代码:5)
我使用CodeIgniter作为框架.
非常感谢你!
Tpo*_*jka 15
如果它在Windows上,可以在贡献中读取:
rename()肯定不遵循使用PHP 5的WinXP上的*nix重命名约定.如果$ newname存在,它将返回FALSE并且$ oldname和$ newname将保持其原始状态.你可以这样做:
function rename_win($oldfile,$newfile) {
if (!rename($oldfile,$newfile)) {
if (copy ($oldfile,$newfile)) {
unlink($oldfile);
return TRUE;
}
return FALSE;
}
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)
链接.