我正在尝试删除文件夹using this script:
function Delete($path) { if (is_dir($path) === true) { $files = array_diff(scandir($path), array('.', '..')); foreach ($files as $file) { Delete(realpath($path) . '/' . $file); } return rmdir($path); } else if (is_file($path) === true) { return unlink($path); } return false; } Delete('tmp');
它适用于我的Xampp服务器,但不适用于我的网络服务器。我已将文件夹及其包含的文件的权限更改为0777.因此它应该是可写的(或者在这种情况下是可擦除的)但没有任何反应。我甚至尝试将文件夹的绝对路径作为函数的参数,但仍然没有。任何想法?
答案 0 :(得分:1)
使用此:
function delTree($dir)
{
$files = glob( $dir . '*', GLOB_MARK );
foreach( $files as $file
{
if( is_dir( $file ) )
delTree( $file );
else
@unlink( $file );
}
if( is_dir($dir) ) rmdir( $dir );
};
答案 1 :(得分:0)
它是否返回false?或者它返回true但实际上并没有删除?
通常我猜它是权限问题。
尝试使用PHP中的mkdir创建一个文件夹,以便PHP是所有者(可以这么说)并尝试使用您的函数删除它。
如果有效,则是权限/所有者问题。
答案 2 :(得分:0)
您可以尝试使用此代码
<?php
$files = glob('application/*'); foreach($files as $file){ if(is_file($file)) unlink($file); }
?>
或者,
function viewDir($path) {
return is_file($path) ?
@unlink($path) :
array_map(__FUNCTION__, glob($path.'/*')) == @rmdir($path);
}
$dir=$_SERVER["DOCUMENT_ROOT"]."/xxxx/xxxx";
echo $dir;
viewDir($dir);
答案 3 :(得分:0)
可能是某些文件是使用像fopen这样的php打开的,那时它不会删除文件夹或目录。我尝试删除文件/文件夹时面临同样的问题
答案 4 :(得分:0)
尝试这样的事情。
<?php
function delete_directory($target) {
if (is_dir($target))
$dir_handle = opendir($target);
if (!$dir_handle)
return false;
while($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
if (!is_dir($dirname."/".$file))
unlink($dirname."/".$file);
else
delete_directory($target.'/'.$file);
}
}
closedir($dir_handle);
rmdir($target);
return true;
}
?>
希望这有帮助。
答案 5 :(得分:0)
尝试使用以下代码行删除一个或多个文件夹文件 希望对您有帮助
function deleteAll($str) {
if (is_file($str)) {
return unlink($str);
}
elseif (is_dir($str)) {
$scan = glob(rtrim($str,'/').'/*');
foreach($scan as $index=>$path) {
$this->deleteAll($path);
}
return @rmdir($str);
}
}