【发布时间】:2015-07-16 15:04:01
【问题描述】:
所以我尝试在 php 中使用重命名函数。
在第一次尝试时,如果目标文件夹为空或不包含与源文件夹同名的任何目录,则重命名功能可以完美运行。但是,如果有相同的目录名称,它会失败。我想要的只是覆盖它,我认为 rename() 就足够了。
这是我的代码:
/**
* 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;
}
上面的代码给了我一个错误提示:
消息: 重命名(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 作为框架。
非常感谢!
【问题讨论】:
-
检查文件权限。
-
正如我上面所说的,我能够成功使用 rename() 。但是,当我尝试使用它将文件夹从源移动到与资源同名的目标文件夹时,就会发生错误。既然我可以在目录上写,我还需要检查文件权限吗?
-
一个目录下不能有同名文件夹,如果需要,需要检查同名文件夹和
merge内容。 -
有什么办法可以覆盖它吗?
-
不知道这是否是问题,但您使用了混合目录分隔符。也许您应该使用
DIRECTORY_SEPARATOR常量并在两条路径上执行 realpath。
标签: php codeigniter