0

フォルダーとその内容を削除するためのスクリプトがあります (StackOverflow のどこかから取得しました。クレジットは私には届きません!)。しかし、それは私にとってはうまくいきません。フォルダーを削除した後、DB からレコードを消去する必要があり、これは問題なく発生します。ただし、フォルダーは削除されず、その内容も削除されません! これは私のコードです:

<?php

$filepath = dirname(__FILE__);
$gemeented = preg_replace( '#^(.*)/(.*?)/(.*?)/(.*?)/(.*?)/(.*?)$#', "$2", $filepath );
$plaatsd = preg_replace( '#^(.*)/(.*?)/(.*?)/(.*?)/(.*?)/(.*?)$#', "$4", $filepath );
$hrubriekd = preg_replace( '#^(.*)/(.*?)/(.*?)/(.*?)/(.*?)/(.*?)$#', "$5", $filepath );
$bedrijfn = preg_replace( '#^(.*)/(.*?)/(.*?)/(.*?)/(.*?)/(.*?)$#', "$6", $filepath );

$filepath2 = "http://".$gemeented.".url.nl/".$plaatsd."/".$hrubriekd."/".$bedrijfn."/";
$filepath3 = "http://".$gemeented.".url.nl/".$plaatsd."/".$bedrijfn."/";

echo $filepath2;


function Delete($filepath2)
{
    if (is_dir($filepath2) === true)
    {
        $files = array_diff(scandir($filepath2), array('.', '..'));

        foreach ($files as $file)
        {
            Delete(realpath($filepath2) . '/' . $file);
        }

        return rmdir($filepath2);
    }

    else if (is_file($filepath2) === true)
    {
        return unlink($filepath2);
    }

    return false;
}


?>

私の $filepath2 が正しいことを確認するためにエコーしました。結果は次のとおりです。

http://dongen.mydomain.nl/s-gravenmoer/aandrijvingenenbesturingen/bedrijfsnaam/

それはまさに私が消したいフォルダですが、それは起こっていません! フォルダには CHMOD 755 があります。

編集:

$filepath を使用するだけでは機能しません。エコーすると、次のようになります。

/vhosts/mydomain.nl/subdomains/dongen/httpdocs/s-gravenmoer/aandrijvingenenbesturingen/bedrijfsnaam
4

2 に答える 2

1

上記のスクリプトを機能させることはできませんでしたが、うまく機能する別のスクリプトを見つけることができました! 相対パスを入力するだけです。

$dirname = "../".$bedrijfn."/";
delete_directory($dirname);

function delete_directory($dirname) {
if (is_dir($dirname))
      $dir_handle = opendir($dirname);
   if (!$dir_handle)
      return false;
   while($file = readdir($dir_handle)) {
      if ($file != "." && $file != "..") {
         if (!is_dir($dirname."/".$file))
            unlink($dirname."/".$file);
         else
            delete_directory($dirname.'/'.$file);    
      }
   }
   closedir($dir_handle);
   rmdir($dirname);
   return true;
}

それが誰かを助けることを願っています!

サンダー

于 2012-09-05T14:12:11.543 に答える
0

url を使用してファイルを削除することはできません。unlink にファイルシステム パスを指定する必要があります。(編集:同じことがrmdirにも当てはまります)

于 2012-09-05T13:24:23.330 に答える