2016-05-24 8 views
1

Q:ユーザー権限を知る方法は、PHPでディレクトリを作成することができますか?ユーザーのアクセス許可を知る方法PHPでディレクトリを作成することを許可


ケース:私はPHPでmkdir()機能を使用してディレクトリを作成します。

問題:現在のOSを使用してディレクトリアクセス許可を作成できる管理状態になっていることをどのように知ることができますか。

さらに、何らかのアクショントリガーにmkdir()関数を使用する前に、パーミッションをチェックしたいと思います。

もう1つの示唆は認められるでしょう。

+0

これまでに何を試しましたか? – rsz

+1

@rszディレクトリを作成できない場合はエラーを処理します。ルートディレクトリにis_writeまたはis_readを使用していますが、それは良い考えではないと思います。 –

答えて

1

ディレクトリを作成できるようにするには、親ディレクトリに書き込む必要があります。

したがって、最も簡単な解決策はis_writableis_dirです(最初の考えは正しいです)。例:あなたがいないディレクトリと書き込みできません区別したい場合は

if(isDirWritable($baseDir)) { 
    mkdir($baseDir.'/'.$dirName); 
} else { 
    throw new \Excpetion(sprintf('%s is not a directory or is not writable', $baseDir)); 
} 

function isDirWritable($dir) { 
    return is_dir($dir) && is_writable($dir); 
} 

あなたは、もちろん、コードで遊ぶことができますが、それはすでに簡単なものでなければなりません。

+0

'mkdir'の戻り値をチェックし、必要に応じてエラーを処理するよりも、これがなぜ優れていますか? – Pred

+0

@Predコードの実行フローが例外やエラーによって決して駆動されるべきではないためです。すべてのPHP拡張機能と組み込みメソッドで常に可能なわけではないかもしれませんが、この場合は推奨されています(IMO)。 –

+0

ディレクトリを作成するたびに暗黙的に同じチェックを行うメソッドを呼び出すことになります。この場合、より効率的な方法は、実際にアクションを実行し、失敗したときにイベントを処理することです。このソリューションにはメリットがなく、複雑さが増し、処理が完了したかどうかが確認されません。この場合、考えられるすべてのエラーソースをチェックするのは効率的ではありません。 (IMO) – Pred

関連する問題