php-mkdir()の適切な使用
ディレクトリパス'/uploads/files'があります。ユーザーが登録するときに、パスの最後にuser_idを追加して、「uploads / files / user_id」にして、各ユーザーがアップロード先の独自のアップロードフォルダーを持つようにします。 Laravelを使用していますが、現在のコードは次のようになっています...
mkdir("uploads/files/" . Auth::user()->id);
これは新しいフォルダを作成するための適切な方法ですか?私はさまざまな方法で遊んでいますが、何も機能しないようです。
答え :
解決策:
mkdir
が最適です。ただし、これを機能させるには、Linuxのアクセス許可を正しく設定する必要があることに注意する必要があります。書き込み権があることを確認してください。 is_writable($dirPath)
で確認できます。権限を755
またはアプリケーションに最適と思われるものに設定します。
以下のようなLinux構文を使用することもできます...より複雑な操作に便利です。
$ path ='/ uploads / files / user_id_dir';
shell_exec( "mkdir -p $ path");
答え :
解決策:
ディレクトリに簡単にアクセスして推測できるようにしたくない場合は、user_idのハッシュを実行して、それに追加するだけです。これは単純なケースとしては問題ありません。しかし、セキュリティの観点からは、これは脅威となる可能性があります。
md5()
またはsha1()
とランダムな複雑な文字列をsalt<として使用するだけです。 / code>ディレクトリを保護し、推測されないようにします。
そしてもう1つ、これをif条件の中に入れて、フォルダーが既に作成されているかどうかを確認します。
$path = 'path_to_your_directory';
if(!file_exists($path)
{
//then create the directory
}
else
{
//do the upload here
}
編集: Auth::user()->id
を使用している場合、ユーザーはサイトにログインする必要があります。つまり、セッションが存在する必要があります。それ以外の場合は機能しません。あなたはそれを知っていると思います。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。