在php中删除文件夹
Posted
技术标签:
【中文标题】在php中删除文件夹【英文标题】:Delete folder in php 【发布时间】:2011-04-07 13:56:49 【问题描述】:我正在尝试删除文件夹using this script:
函数删除($path) if (is_dir($path) === true) $files = array_diff(scandir($path), array('.', '..')); foreach ($files 作为 $file) 删除(realpath($path) . '/' . $file); 返回 rmdir($path); 否则 if (is_file($path) === true) 返回取消链接($路径); 返回假; 删除('tmp');
它适用于我的 Xampp 服务器,但不适用于我的网络服务器。我已将文件夹及其包含的文件的权限更改为 0777。所以它应该是可写的(或者在这种情况下是可擦除的)但没有任何反应。我什至尝试将文件夹的绝对路径作为函数的参数,但仍然没有。有什么想法吗?
【问题讨论】:
任何错误信息?你应该得到一些。 尝试在顶部添加ini_set('display_errors', 1); error_reporting(E_ALL);
,看看是否会出现任何错误。
没有。依然没有。只是一些我期待的通知消息。但它们并不相关。
【参考方案1】:
试试这行代码删除一个文件夹或文件夹文件 希望对你有帮助
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);
【讨论】:
【参考方案2】:试试这样的。
<?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;
?>
希望这会有所帮助。
【讨论】:
【参考方案3】:可能有些文件是用 php 像 fopen 打开的,那个时候它不会删除文件夹或目录。我尝试删除文件/文件夹时遇到了同样的问题
【讨论】:
【参考方案4】:你可以试试这个代码
<?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);
【讨论】:
【参考方案5】:使用这个:
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 );
;
【讨论】:
【参考方案6】:它返回 false 吗?或者它返回 true 但实际上并没有删除?
通常我只是猜测这是一个权限问题。
尝试使用 PHP 中的 mkdir 创建一个文件夹,以便 PHP 是所有者(可以这么说)并尝试使用您的函数将其删除。
如果有效,那就是权限/所有者问题。
【讨论】:
我试过这个:if(mkdir("tmp", 0777)) echo('works');否则回声(“不”);如果(删除('tmp'))回声('是');否则回声('否');但什么也没有发生。它不是在制作文件夹。它什么也没显示。 您确定您的主机允许这些功能吗? 是的,我刚刚尝试创建一个新的 php 文件并使用新的 php 文件创建一个文件夹。有效。有趣的是,尽管我使用了 mkdir("tmp",0777) 它创建了一个具有 0755 权限的 tmp 文件夹,这是默认的。我是不是用错了 mkdir 函数?权限值应该用引号引起来吗?以上是关于在php中删除文件夹的主要内容,如果未能解决你的问题,请参考以下文章
PHP删除链接从文件夹中取消链接文件但不从MSSQL表中删除行