../../image/benilogo.gifPHP4 について


PHP の fileperms() ついて。

 PHPのマニュアル fileperms( ) 


file_test/file04.php
$test_arr = array('nofile',          //これは存在しない
                  'file04.php',      //これ以下は存在する。
                  '../logdir',
                  '../../red.gif',
                  '../../../test.txt',
                  '../../../../foo',
                  'test.log'
                  );
for( $i = 0; $i <= 6; $i++ ){
  if ($buf = @fileperms($test_arr[$i])){
    echo "$test_arr[$i] = ",$buf,"  8 進表示--",decoct($buf);
    echo "  2進表示 ",decbin($buf);
    echo "   ",decbin($buf & ( 1 << 3 )), "\n";
  }else{
    echo "$test_arr[$i] = ファイルなし \n";
  }
}

  • 実際に存在する directory やファイルあるいは存在しないもの
    'nofile' -- 存在しない
    'file04.php' -- 存在する。
      :
  • これらを配列に置いて fileperms を実行してみる。
  • if ($buf = @fileperms($test_arr[$i])) で
    存在するときは TRUE なければ FALSE になる。
  • @ で抑制しておかなければ False のとき メッセージを
    web に表示してしまう。

結果
実験です
nofile = ファイルなし 
file04.php = 33261  8 進表示--100755  2進表示 1000000111101101   1000
../logdir = 16879  8 進表示--40757  2進表示 100000111101111   1000
../../red.gif = 33188  8 進表示--100644  2進表示 1000000110100100   0
../../../test.txt = 33188  8 進表示--100644  2進表示 1000000110100100   0
../../../../foo = 16877  8 進表示--40755  2進表示 100000111101101   1000
test.log = 33188  8 進表示--100644  2進表示 1000000110100100   0

  • それぞれに 10進 8進 2進で表示
  • $buf & ( 1 << 3 ) ビット演算

それぞれの permission はビット演算すればわかる。
が、実際に使用するときには、たぶん そのファイルが存在するかどうか? 存在すれば 書き込み可能か読み込み可能か?
がわかればいい。 だったら is_writable( ) is_readble( ) で簡単にわかればいい。



















目次に戻る

2005/05/25start ********* Last Update 2006/11/12 18:45 JST

(C) Y.Kondou,2005,2006 All Rights, Reserved.
その他、お気づきの点がありましたら連絡先はこちらから