17

file permissionsまたはを介し​​てオペレーティング システム固有のコマンドを実行せずに、どうすれば を確認できますpassthru()exec()?

4

5 に答える 5

22

fileperms()関数を使用する

clearstatcache();
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
于 2008-08-21T08:10:44.817 に答える
12

is_readable()is_executable()などのコマンドを使用できます。

于 2008-08-21T08:09:46.720 に答える
6

実際のコーダーは、文字列ではなくビット単位の操作を使用します;) これは、パーミッションを処理するより洗練された方法です:

function checkPerms($path)
{
    clearstatcache(null, $path);
    return decoct( fileperms($path) & 0777 );
}
于 2013-04-18T13:12:17.670 に答える
0

ファイルのアクセス許可を確認して何をしたいですか?

安全なコードを書くとき、「チェックしてから実行する」というのは、ほとんどの場合間違っています。その理由は、できるかどうかを確認してから実際に実行するまでの間に、システムの状態が変化し、実行すると異なる結果になる可能性があるためです。

たとえば、ファイルを書き込む前にファイルが存在するかどうかを確認する場合、ファイルが正常に書き込まれたかどうかを確認せず (または十分に詳細な方法で確認しないでください)、後で書き込んだファイルの内容に依存します。 、攻撃者によって書き込まれたファイルを実際に読み取っている可能性があります。

したがって、ファイルのアクセス許可をチェックする代わりに、アクセス許可のチェックが成功した場合に実行する予定だったことを実行し、エラーを適切に処理します。

于 2008-08-21T08:09:41.993 に答える