У меня есть следующий скрипт PHP. Все запросы работают, но не удается удалить папку. Папка, которую я пытаюсь удалить, находится внутри папки с именем uploads и создается с именем уникального идентификатора, сохраненного в базе данных. Любые идеи, почему я продолжаю получать отказано в разрешении ошибок, как это
Предупреждение: scandir (uploads / c71a8c3efbe52bff06e9cbd94c95ae00): не удалось
open dir: в доступе отказано
/var/www/html/braiden/braintree/deleteTemplate.php в строке 43Предупреждение: scandir (): (errno 13): в доступе отказано
/var/www/html/braiden/braintree/deleteTemplate.php в строке 43Предупреждение: в foreach () указан неверный аргумент в
/var/www/html/braiden/braintree/deleteTemplate.php в строке 46Предупреждение: rmdir (uploads / c71a8c3efbe52bff06e9cbd94c95ae00): каталог
не пусто в /var/www/html/braiden/braintree/deleteTemplate.php на
строка 56
Вот код Имейте в виду, что все работает, кроме части удаления каталога. Я просто хочу дать вам немного больше кода для контекста.
<?php session_start(); ob_start();
require_once('database.php');
if(isset($_SESSION['admin']) and $_SESSION['admin']==1){
if(isset($_GET['id'])){$templateId=$_GET['id'];}
else{
header('Location:logout.php');
}
$selectExistsQuery="SELECT COUNT(*) AS exist FROM dataclayTemplates WHERE id='$templateId'";
$selectExistsResult=mysqli_query($mysqli, $selectExistsQuery);
while($row=mysqli_fetch_assoc($selectExistsResult)){
$exists=$row['exist'];
}
if($exists==1){
$selectItemIdQuery="SELECT itemId FROM dataclayTemplates WHERE id='$templateId'";
$itemIdResult=mysqli_query($mysqli, $selectItemIdQuery);
while($row=mysqli_fetch_assoc($itemIdResult)){
$itemId=$row['itemId'];
}
$deleteDataclayCategoriesLinkQuery="DELETE FROM dataclayCategoryLink WHERE templateId='$templateId'";
$deleteDataclayCategoriesLinkResult=mysqli_query($mysqli, $deleteDataclayCategoriesLinkQuery);
$deleteDataclayKeywordsLinkQuery="DELETE FROM dataclayKeywordLink WHERE templateId='$templateId'";
$deleteDataclayKeywordsLinkResult=mysqli_query($mysqli, $deleteDataclayKeywordsLinkQuery);
$deleteTextInstructionsQuery="DELETE FROM textInstructions WHERE templateId='$templateId'";
$deleteTextInstructionsResult=mysqli_query($mysqli, $deleteTextInstructionsQuery);
$deleteLayerInstructionsQuery="DELETE FROM layerInstructions WHERE templateId='$templateId'";
$deleteLayerInstructionsResult=mysqli_query($mysqli, $deleteLayerInstructionsQuery);
$deleteUploadInstructionsQuery="DELETE FROM uploadInstructions WHERE templateId='$templateId'";
$deleteUploadInstructionsResult=mysqli_query($mysqli, $deleteUploadInstructionsQuery);
$deleteColorInstructionsQuery="DELETE FROM colorInstructionsAndPresets WHERE templateId='$templateId'";
$deleteColorInstructionsResult=mysqli_query($mysqli, $deleteColorInstructionsQuery);
$deleteDataclayTemplateQuery="DELETE FROM dataclayTemplates WHERE id='$templateId'";
$deleteDataclayTemplateResult=mysqli_query($mysqli, $deleteDataclayTemplateQuery);
$folder='uploads/'.$itemId;
function removeFolder($folder){
if(is_dir($folder) ===true){
$folderContents = scandir($folder);
unset($folderContents[0], $folderContents[1]);
foreach($folderContents as $content=>$contentName){
$currentPath=$folder.'/'.$contentName;
$fileType=filetype($currentPath);
if($fileType == 'dir'){
removeFolder($currentPath);
} else{
unlink($currentPath);
}
unset($folderContents[$content]);
}
rmdir($folder);
}
}
removeFolder($folder);
if($deleteDataclayCategoriesLinkResult and $deleteDataclayKeywordsLinkResult and $deleteTextInstructionsResult and $deleteLayerInstructionsResult and $deleteUploadInstructionsResult and $deleteColorInstructionsResult and $deleteDataclayTemplateResult){
$data['success']=true; $data['error']=false;
} else{$data['success']=false; $data['error']=true;}
} else {header('Location:logout.php');}
} else {
header('Location:logout.php');
}
echo json_encode($data);
?>
Задача ещё не решена.
Других решений пока нет …