PHP无法删除目录
我试图删除一个文件夹,其中包含文件,但下面的代码确实删除了文件,但没有删除文件夹PHP无法删除目录,php,Php,我试图删除一个文件夹,其中包含文件,但下面的代码确实删除了文件,但没有删除文件夹 $nameFolder = $_GET['delete']; $dir = '../projecten/projecten/'.$nameFolder.''; $filesIN = glob($dir."/"."*"); $status = 'false'; foreach($filesIN as $files) //here i take all the files unlink($files); $
$nameFolder = $_GET['delete'];
$dir = '../projecten/projecten/'.$nameFolder.'';
$filesIN = glob($dir."/"."*");
$status = 'false';
foreach($filesIN as $files) //here i take all the files
unlink($files);
$status = 'true';
if($status=='true'){
rmdir($dir);
$status = 'false';
}
我会检查文件权限。在linux上:
ls -al /path/to/projecten/projecten/
简单来说,web服务器用户必须具有对目录的写访问权限才能删除文件,例如用户www数据。在以下示例中,用户lt可以删除测试文件:
drwxrwxr-x 2 lt lt 4096 Apr 29 08:54 test
我也不明白这段代码:
$status = 'true';
if($status=='true'){
rmdir($dir);
$status = 'false';
}
为什么不干脆:
rmdir($dir);
As$状态将始终为“真”
您也可以尝试使用系统调用,例如:
system `rm -rf /full/path/to/projecten/projecten/$nameFolder`;
不过,使用该系统命令时要非常小心-如果删除了错误的目录,则无法返回
如果知道目录为空,则可以使用更安全的系统命令:
system `rmdir /full/path/to/projecten/projecten/$nameFolder`;
但正如上面的评论所指出的,删除基于$GET变量的目录时要非常小心。想象一下,如果GET变量是“../../projecten”,尤其是使用“rm-rf”系统命令,我将检查文件权限。在linux上:
ls -al /path/to/projecten/projecten/
简单来说,web服务器用户必须具有对目录的写访问权限才能删除文件,例如用户www数据。在以下示例中,用户lt可以删除测试文件:
drwxrwxr-x 2 lt lt 4096 Apr 29 08:54 test
我也不明白这段代码:
$status = 'true';
if($status=='true'){
rmdir($dir);
$status = 'false';
}
为什么不干脆:
rmdir($dir);
As$状态将始终为“真”
您也可以尝试使用系统调用,例如:
system `rm -rf /full/path/to/projecten/projecten/$nameFolder`;
不过,使用该系统命令时要非常小心-如果删除了错误的目录,则无法返回
如果知道目录为空,则可以使用更安全的系统命令:
system `rmdir /full/path/to/projecten/projecten/$nameFolder`;
但正如上面的评论所指出的,删除基于$GET变量的目录时要非常小心。想象一下,如果GET变量是“../../projecten”,尤其是使用“rm-rf”系统命令,则只能删除空目录 试试看:
<?php
//recursively remove a directory
function rrmdir($dir) {
foreach(glob($dir . '/' . '*') as $file) {
if(is_dir($file)){
rrmdir($file);
}else{
unlink($file);
}
}
rmdir($dir);
}
//Example
$nameFolder = $_GET['delete'];
$dir = '../projecten/projecten/'.$nameFolder.'';
rrmdir($dir);
?>
来源:[已编辑]只能删除空目录 试试看:
<?php
//recursively remove a directory
function rrmdir($dir) {
foreach(glob($dir . '/' . '*') as $file) {
if(is_dir($file)){
rrmdir($file);
}else{
unlink($file);
}
}
rmdir($dir);
}
//Example
$nameFolder = $_GET['delete'];
$dir = '../projecten/projecten/'.$nameFolder.'';
rrmdir($dir);
?>
来源:不是答案,但请更改:
$nameFolder = $_GET['delete'];
致:
您可能还需要添加一个:
if (is_dir('../projecten/projecten/'.$nameFolder) {
// ... do stuff here
} else {
// not a valid path
}
不是答案,但请更改:
$nameFolder = $_GET['delete'];
致:
您可能还需要添加一个:
if (is_dir('../projecten/projecten/'.$nameFolder) {
// ... do stuff here
} else {
// not a valid path
}
PHP进程是否具有删除目录的正确所有权/文件权限?请参见此。如果能够正常工作,请小心使用get参数good point@PeterAjtai删除任意目录的脚本。如果name folder为../../../../../或其他内容,会发生什么情况?PHP进程是否具有删除目录的正确所有权/文件权限删除目录?请参见此。如果您能正常工作,请小心使用使用get参数good point@PeterAjtai删除任意目录的脚本。如果名称文件夹为../../../../或其他名称,会发生什么情况?