このスクリプトを使用して、ディレクトリとそのすべての内容を削除しようとしています...
<?php
$app = $_POST['app'];
if (isset($_POST['app'])) {
$dir = "../apps/" . $app . "/";
function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
}
}
}
?>
$post は正常に動作しており、スクリプトはエラーを返していませんが、ディレクトリを削除していません。フォルダのアクセス許可と関係があるのでしょうか? PHP 拡張機能を有効にする必要はありますか?
--編集-- リンクされた複製は私が望むことをしません。コードを変更する方法がわかりません。クライアント側でディレクトリを削除しているので、__DIR__
この /test/app のようなパスを保持するため使用できません。また、この \test\app のようにする必要があります。また、コードはフォルダーを削除しませんが、削除しますすべての内容。それはラインと関係があると思いますFilesystemIterator::SKIP_DOTS
。フォルダーを削除するコードも必要です。ユーザーがアプリを再度インストールした場合、フォルダーが重複しているため機能しないためです。
作業コード:
<?php
$app = $_POST['app'];
if (isset($_POST['app'])) {
$dir ="../apps/" . $app;
$di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
$ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
foreach ( $ri as $file ) {
$file->isDir() ? rmdir($file) : unlink($file);
}
rmdir($dir);
}
?>