ファイル管理不具合:権限がない子ディレクトリが一つでもあると使えない

質問全般・改善要望
kazuike
メンバー
メンバー
記事: 458
登録日時: 2009年8月12日(水) 12:53

ファイル管理不具合:権限がない子ディレクトリが一つでもあると使えない

投稿記事by kazuike » 2017年4月01日(土) 13:41

MODX1.0.18J
「エレメント」>「ファイル管理」について、
権限のない子ディレクトリが一つでも存在すると(その子ディレクトリを開こうとしなくても、それ以前に)、
親ディレクトリが表示できない。という不具合があります。
特に、ドキュメントルート直下に権限の無い子ディレクトリが一つでも存在すると、
「ファイル管理」が全く使えない(いきなりエラーで止まる)という状況です。

具体的には、
現在の表示対象となるディレクトリに子ディレクトリが存在していると、
manager/actions/element/files.dynamic.php
の486行目の「scandir」が、無条件に子ディレクトリの中を覗きに行くため、
当然ながら権限がないディレクトリであれば、そこでエラーになって止まってしまう。
という現象のようです。

とりあえず、対症療法として、
486行目~496行目

コード: 全て選択

            $dfiles = scandir($newpath);
            foreach($dfiles as $i=>$infile)
            {
               switch($infile)
               {
                  case '..':
                  case '.':
                     unset($dfiles[$i]);
                     break;
               }
            }
を、

コード: 全て選択

        $dfiles = @scandir($newpath);
        if ($dfiles)
        {
              foreach($dfiles as $i=>$infile)
              {
                 switch($infile)
                 {
                    case '..':
                    case '.':
                       unset($dfiles[$i]);
                       break;
                 }
              }
        }
のように変更したところ、
上記の現象を回避することはできました。
(「@」を付けて、直接エラーで止まらないようにしています)
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/