1

とに関連する奇妙な問題が少しfile_exists()ありglob()ます。後者は、この特定のディレクトリ内のすべてのファイルを問題なく一覧表示しますが、ファイルパスを繰り返し処理して呼び出すとfile_exists()、falseが返されます。

私の最初の反応は、これは権限の問題であるということでしたが、私は実行しました

sudo chmod -R 766 ./directoryName

PHPが少なくとも読み取りアクセス権を持つようにします。それでも違いはありません。

セーフモードが問題になる可能性があるという他のいくつかの質問をここで読みましたが、PHP(PHP Version 5.3.5-1ubuntu7.10)がセーフモードで実行されていないことを確認しました。

これは、ls -la問題のディレクトリでの私の出力です...

drwxrw-rw-  6 user     user      4096 2012-08-04 16:15 .
drwxr-xr-x  6 user     user      4096 2012-08-04 12:42 ..
-rwxrw-rw-  1 user     user       141 2012-07-25 20:43 AppCache.php
-rwxrw-rw-  1 user     user      1982 2012-08-04 10:54 AppKernel.php
-rwxrw-rw-  1 user     user       474 2012-07-25 20:43 autoload.php
-rwxrw-rw-  1 www-data user     47590 2012-08-06 20:01 bootstrap.php.cache
drwxrwxrw-+ 3 user     user      4096 2012-08-06 20:24 cache
-rwxrw-rw-  1 user     user      1643 2012-08-06 20:01 check.php
drwxrw-rw-  2 user     user      4096 2012-08-04 12:41 config
-rwxrw-rw-  1 user     user       794 2012-07-25 20:43 console
-rwxrw-rw-  1 user     user        13 2012-07-25 20:43 .htaccess
drwxrwxrw-+ 2 user     user      4096 2012-08-06 20:25 logs
-rwxrw-rw-  1 user     user      1327 2012-07-25 20:43 phpunit.xml.dist
drwxrw-rw-  3 user     user      4096 2012-08-04 12:41 Resources
-rwxrw-rw-  1 user     user     24240 2012-08-06 20:01 SymfonyRequirements.php
-rwxrw-rw-  1 user     user       727 2012-07-25 20:43 upgrade.php

私のインデックススクリプトでは、非常に基本的なテストとして次のことを行っています...

$files = glob('/path/to/directory/*.cache');
foreach($files as $file) {
    echo $file . ':';
    var_dump(file_exists($file));
    echo '<br>';
}

以下を出力します。

/path/to/directory/bootstrap.php.cache:
boolean false

スクリプトを作成してコマンドラインから実行すると、期待どおりにfile_exists()呼び出しが返さtrueれます。

4

2 に答える 2

3

IIRCでは、+x許可ビットがないと、ディレクトリに読み込むことができず、問題の原因となる可能性があります。

パーミッションマスクを755ではなくに変更する766と、PHPに読み取りおよび実行権限が付与され、問題が解決するはずです。

sudo chmod -R 755 ./directoryName
于 2012-08-06T19:34:57.687 に答える
1

うーん、あなたの許可は十分に許容できるように見えますが、所有者が「ユーザー」であるためだと思います。

テストするには、権限をphpユーザーの名前に変更してみてください。これは、次のコマンドで見つけることができます。

echo whoami();

次に、index.phpを確認します

その場合は、「user」とphpユーザー(通常、私が理解していることから「daemon」)の両方を持つファイルのグループを作成できます。

乾杯!

于 2012-08-06T19:34:10.593 に答える