我有一个问题,当我想删除一个目录下的所有文件与Codeigniter..
我一直在观看和尝试任何教程,只是有一个问题…它总是不能删除任何文件。
这是我的脚本:
@view
<a href="<?php echo base_url()?>sia/delete_allfile" title="Delete All File" onclick="return confirm('Are you sure you want delete all files?')">Delete All File</a>
@ controller
public function delete_allfile()
{
$files = glob($_SERVER['DOCUMENT_ROOT'].'upload/perizinan/*'); // get all file names
if(is_dir($path))
{
$this->session->set_flashdata('message',
'
Wrong directory !
');
redirect('sia/perizinan');
}else
{
foreach($files as $file)
{ // iterate files
if(is_file($file))
unlink($file); // delete file
}
redirect('sia/perizinan');
}
}
尝试使用Codeigniter的文件帮助器来删除文件。这正是你想要做的。当然,如果文件夹上的权限是错误的,它将不起作用(它需要权限:rwxrwxrwx(0777)),但它使代码更清晰,更容易调试。在控制器的构造函数中添加:
$this->load->helper('file');
和替换:
foreach($files as $file)
{ // iterate files
if(is_file($file))
unlink($file); // delete file
}
delete_files('./path/to/directory/');
或者如果你想递归地包含子文件夹
delete_files('./path/to/directory/', TRUE);
这将删除文件夹/子文件夹中的所有文件,所以如果你想要更多的控制,你最好使用unlink,这样你就可以决定要删除什么了
您是否在页面或日志文件中获得任何错误消息?您是否检查了文件夹/文件权限?您可以使用chmod和fileperms函数
这很简单。你可以试试这个
$files = glob('/home/xxx/public_html/project_name/application/*');
foreach($files as $file){
if(is_file($file))
unlink($file);
}
它可能会工作,我已经使用了
$this->load->helper('directory');
$this->load->helper("file");
$dir_fiels = directory_map('resources/captcha/');
$len = sizeOf($dir_fiels);
for($i=0; $i<$len;$i++){
unlink('resources/captcha/'.$dir_fiels[$i]);
}