Drupalのファイル管理について
- CMS
- 開発
Drupalで管理されるファイルのパスの種類
Drupalでは画像やPDFなどのファイルを添付しコンテンツを作成することがあります。
それらの添付したファイルが格納されるファイルパスは以下の3つの種類に分けることができます。
- パブリック「public://」
- プライベート「private://」
- テンポラリー「temporary://」
それぞれのファイルパスのディレクトリはsettings.phpにて任意に設定することができます。
ファイルパスによる違い
それぞれのファイルパスでどのような違いがあるかを説明いたします。
①パブリック「public://」について
パブリックのファイルパスは誰でもアクセス可能としなければなりません。そのため、通常は、ファイルが直接アクセス可能なルートである「sites/default/files」が設定されます。
②プライベート「private://」について
プライベートのファイルパス上のファイルは、権限のあるユーザのみがアクセス可能としなければならないため、通常はWebルートの外側を設定しなければなりません。匿名ユーザの場合、ファイルを作成した時と同じセッションの場合のみアクセスできます。
③テンポラリー「temporary://」について
一時ファイルを格納するファイルパスになります。プライベートファイルパスと同様に、Webルートの外側を設定します。テンポラリーファイルパスに置かれたファイルは、Drupalの設定で一定時間経過後に消去されるようにすることができます。
ファイルの取得の際の注意点
プライベートファイルに格納されているファイルでも、直接パスを指定しPHPの処理でダウンロードさせようとすると、権限のチェックが行われません。
Drupalでファイルをダウンロードさせる場合は、Drupalにて用意されているファイルダウンロード用のファンクションを使うと、権限チェックをしたうえでダウンロードができます。
また、テンポラリーファイルで一定時間経過後にファイルを削除したい場合は、単にテンポラリーパスにファイルを作成するだけでは削除されないため、Drupalのファイルエンティティを用いてファイルを作成することが必須です。
まとめ
Drupalのファイル管理機能を最大限活用するには、Drupalで用意されているファンクションを使う必要があります。 Drupalには、ファイル管理だけでなく、様々な便利なファンクションがありますので、積極的に使っていくことがおすすめです。