3

私のアプリケーションの一般的な構造:

[includes] - not accessible by the web
.. important database classes, etc
[public]
.. all files that the application publicly uses

フォルダをどこに保存するかを決定しようとしてい[uploads]ます。これは、すべてのユーザーがメディア (画像など) を保存する場所です。

[uploads]
   [user123]
      mypic.jpg
      mysecondpic.jpg
   [user456]
      picpic.jpg
      yeah.jpg

現在、フォルダー内にこのフォルダーを持っています[public]が、何らかの理由で、これが適切な場所であるとは確信が持てません...

この[includes]フォルダーは一般ユーザーはアクセスできず、PHP のみがそこに移動できます。

ベストプラクティスのために、これについてどう思いますか?

4

3 に答える 3

2

兄弟ディレクトリ内。つまり、includes/および と同じレベルのディレクトリpublic/です。

于 2012-07-03T00:29:48.387 に答える
0

そのユーザーだけだと思います。つまり、「共有」メディアを会話に持ち込むことなく...これは将来の可能性です。

その場合、通常の設定は

  • ファイルをWebルートの外に配置します(つまり、publicフォルダーの外に配置します-正確には、あなた次第です)

  • ユーザー権限をチェックし、すべてがチェックアウトした場合に要求されたファイルを通過させるPHPスクリプトを作成します。そのPHPスクリプトは、次のようにすべてのリソースに対して呼び出されます。

    domain.com/resource.php?user=user123&file=mypic.jpg

    (またはかなりのURL書き換えを使用します)

ただし、これには、要求されたすべてのリソースに対して高価なPHPプロセスを開始する必要があることに注意してください。リクエストを最小限に抑えるために、非常に巧妙なキャッシュを使用してください。

X-Sendfileという名前のこのプロセスをより効率的にするApacheおよびnginxモジュールがあります。それは一見の価値があるかもしれません。

于 2012-07-03T00:38:06.983 に答える
0

それはあなたが何を達成しようとしているかによって異なります。たとえば、ユーザー記事の写真をアップロードする場合は、それらを などの公開フォルダーに配置します/public/images(画像はどちらからでも表示されます)。一方、(たとえば) アップロードされたファイルから利益を得るアプリケーションを作成している場合は、/uploadsそれらをパブリックにアクセスできないように、 のように 1 つ上のレベルに配置することをお勧めしますが、次のようなコードを作成できます。ダウンロードを有効にします。

于 2012-07-03T00:34:59.687 に答える