スポンサーリンク

Drupalで動画ファイルや画像ファイル、その他プレイヤなどの設置場所で悩んでします。

前の記事では、機能でモジュール選択をしていましたが、どこに置けるのかはモジュールごとでかなり異なっています。
選択肢としては以下5通りが考えられます。
①Drupalルートディレクトリ以下
②サイトディレクトリ(sites/all/filesまたはsites/hogehoge/files)以下
③モジュールディレクトリ以下(sites/all/modules/モジュール名/)
④Webルートディレクトリ以下
⑤Webルートディレクトリを除くディレクトリ以下

Drupal拡張モジュールで設定できる一般的なパスは、②番のfiles以下になります。
モジュールによっては、①や④が指定できるものもあります。
③はおもにそのモジュールで使用するpluginなどを配置するケースで使われますが、プレイヤファイル(SWF)やSWFObject Java Libraryを配置しなければならないケースがあります。
⑤を使うには導入時にSettings.phpを変更するかもしくはファイルシステム設定で変更することになります。ただこの場合、拡張モジュールで正しくパス設定ができるかは確実ではありませんので、使えないモジュールが出てくる可能性があります。

何をきにしてるの?と思われるかもしれませんが、1つが管理面のはなし、2つめがセキュリティ面の話です。
③のように、モジュールごとにプレイヤを配置しなくてはいけない場合、他のモジュールで同じプレイヤを使おうとすると別の場所に配置しなくてはいけないため、同一ファイルがいろいろな場所に散らばってしまいます。これでは最新版管理などでミスをしてしまう可能性があります。
もう1点のセキュリティ面については、②や③の場合にページのソースを表示すると、動画ファイル、画像ファイルやプレイヤファイルのパスからサーバのローカルディレクトリの構造が簡単に推測できてしまいます。
これは階層が深いためでありセキュリティを考慮すると、外部にできるかぎり情報を与えたくありません。
理想は④もしくは①なのですが、そのように設定できるモジュールはあっても、実際にはそのモジュール内での各機能で整合性がとれておらず使えないものばかりです。

FlashVideoモジュールでは、RC2ではCCKおよびUploadのどちらを使用してもFlashVideoでの設定が使われます。FFMPEGの設定の中で出力先をWEBルート以下に変更できますが、うまくいきません。RC3ではCCKの場合のみFileFieldで設定したパスを使用しますが、files以下の相対パスしか設定できません。またプレイヤはRC2,RC3ともにFiles以下の相対パスになります。

SWF Toolsモジュールでは、settings.phpに記述することで各プレイヤやswfobjectファイルのパスをデフォルトのswftools/sharedから変更できる旨記載がありますが、動画ファイル自体は、②のfiles以下に配置されているにもかかわらず、生成されるコードで使用される動画ファイルの場所が、変更先のパスにさらにsites/~が付加されてしまい再生できません。

ファイルパスの点だけにフォーカスすると、Embedded Media Fieldがしっくりきます。
動画ファイルのURLを入力するタイプなので当然ですけど・・・

結局のところは、何を優先して何を犠牲にするかの選択になります。

自分にあった機能優先で選ぶならFlashVideoで、多少機能は妥協してトータルで選ぶならEmbedded Media Fieldといった感じでしょうか。

一度、All In OneタイプのVideoモジュールも使用してみてから決めようと思います。

スポンサーリンク