3

file_existsがfalseを返し、is_fileがtrueを返すという問題があります。

echo(getmygid()." = gid\n"); //501
echo(getmyuid()." = uid\n"); //501
echo(posix_getgid()." = pgid\n"); //501
echo(posix_getuid()." = puid\n"); //501
var_dump(file_exists("/home/www/public_html/")); //bool(true)
var_dump(file_exists("/home/www/public_html/index.html")); //bool(false)
var_dump(is_file("/home/www/public_html/index.html")); //bool(true)

var_dump(stat("/home/www/public_html/index.php")); 

出力は次のとおりです。

501 = gid
501 = uid
501 = pgid
501 = puid
bool(true)
bool(false)
bool(true)
array(26) {
  [0]=>
  int(51712)
  [1]=>
  int(58055)
  [2]=>
  int(33197)
  [3]=>
  int(1)
  [4]=>
  int(501)
  [5]=>
  int(501)
  [6]=>
  int(0)
  [7]=>
  int(473)
  [8]=>
  int(1323573973)
  [9]=>
  int(1323573973)
  [10]=>
  int(1323574039)
  [11]=>
  int(4096)
  [12]=>
  int(8)
  ["dev"]=>
  int(51712)
  ["ino"]=>
  int(58055)
  ["mode"]=>
  int(33197)
  ["nlink"]=>
  int(1)
  ["uid"]=>
  int(501)
  ["gid"]=>
  int(501)
  ["rdev"]=>
  int(0)
  ["size"]=>
  int(473)
  ["atime"]=>
  int(1323573973)
  ["mtime"]=>
  int(1323573973)
  ["ctime"]=>
  int(1323574039)
  ["blksize"]=>
  int(4096)
  ["blocks"]=>
  int(8)
}

構成に何か問題があったと思いますが、それが何であるかを完全には理解していません。

さらにエキサイティングなのは、file_existsが機能していないにもかかわらずfread(fopen('/home/www/public_html/index.html','r'), filesize('/home/www/public_html/index.html'))、ファイルの内容が返されることです。

4

2 に答える 2

2

上の警告を参照してくださいfile_exists()

この関数はFALSE、セーフモードの制限のためにアクセスできないファイルに対して戻ります。ただし、これらのファイルがにある場合は、これらのファイルを含めることができますsafe_mode_include_dir

関数にはこのis_file()制限がないようです。

于 2011-12-11T01:45:41.617 に答える
2

奇妙なことに、マニュアルから確認するいくつかのオプションがあります。

Note: The results of this function are cached. See clearstatcache() for more details.

またはこれは多分:

Warning

この関数は、セーフモードの制限のためにアクセスできないファイルに対してFALSEを返します。ただし、これらのファイルがsafe_mode_include_dirにある場合は、これらのファイルを含めることができます。

それらは私がそれを影響しているかもしれないと私が考えることができる唯一のものです。あなたがそれを試したかどうかはわかりませんが、一見の価値があります。

アップデート

ファイルフラグはどうですか?シェルから(シェルアクセスがある場合)ls -alh /home/www/public_html | grep index.html、フラグが奇妙に設定されていないことを確認できますか?

更新2

問題は、所有者がディレクトリの内容を表示できないようにディレクトリのアクセス許可が設定されていることです。コメントでさらに説明されています

于 2011-12-11T01:46:04.270 に答える