今後の進め方

この連載を開始してからかなりの日数が経過してしまい、Drupalコアの最新版も7.8から7.10になっています。

この連載のはじめのページに記載した不具合(1)から(6)のうち、パッチにより改善したのが(4)Uploadprogressの進捗バーがアニメーションになる件です。
これについてはCSSなどの記述に不具合があったようでコアのバージョンを最新版にすることで改善すると思われます。

連載の記事を書いているなかで新たに判明した問題であるMediaモジュールのMultimedia Asetフィールド+Media:YouTubeの画像URLの件は、最初にエラーが発生するのはコアの部分でありますが、これにファイル名(パス名)を渡しているのはMediaモジュールなわけでさらにそのファイル名はMedia:YouTubeが生成しているわけなので、どの箇所が根本的な原因であるかは定かではありません。

コアが多くのバグフィックスをしてバージョンアップしていますし、Mediaモジュールのバージョンのステータスも変わっていますので現状のテスト環境で継続するのはムダな労力を費やすだけではないかと考えています。

また、現行のDrupal6サイトでは数日前にMediaFrontの使用を中止しました。
これはMediaFrontモジュールでできる範囲以外のこと(カスタマイズ)をする場合にソースコードが大量で複雑であるためとJW Player+ColorBoxのほうがやりたいことが一致しているのでそうしました。

ただ、Drupal6ではColorBoxでInline表示した場合、IE9でThickBoxのときとおなじように前回の再生状態の継続になってしまいます。
これについてはColorBoxのHookをjavascriptで作成する必要があるのかColorBoxモジュールを手直ししないといけないのかはわかりませんが、
ColorBoxではJQueryのバージョンに依存して最新版のColorBox 3.19が利用できていませんので、最新版では運がよければ修正されている可能性もあり、またJQuery1.4では問題ない可能性もあるわけでDrupal6と同じ構成でDrupal7ではどうであるかを試してみたいと思っています。

そうはいってもFeedsでリモートサイトの動画ノードを作成するにはMediaモジュールやMedia:YouTubeモジュールははずせませんので最悪は同じことで悩む結果になる可能性もあります。

とにかくDrupal7のコアをバージョンアップしてMediaFrontを使用しない方向で進めていこうと思います。


2012.01.17 追記

Drupal7のコアを7.8から7.10にバージョンアップし、各モジュールも最新版に更新しました。

Multimedia Asetの画像URLパス名の問題については(7)Media:Yotubeを使ったリモートサイトの画像URLから画像ファイルがダウンロードできないとし、以前からの不都合をあわせ、(1)から(7)について最新の状況を以下にまとめました。

(1)ファイルアップロード時に500 Internal Server Errorが発生する場合がある

3つの動画をアップロードしてみましたが、エラーは発生しませんでした。
ただし、(3)の状態になっています。

(2)アップロードしたファイルのパーミッションが途中で664に変更される

仕様のようなのでコアのincludes/file.incの664を644に変更して対処しました。
664のままでもよさそうですが(1)の500 Internal Server Errorを起こす原因になるかもと懸念しての対処です。

(3)アップロード中に(1)が発生した場合、ファイルが複数アップロードされてしまう

前回はAjaxエラーのポップアップ画面が表示されていましたが、今回は何も表示されませんでした。
しかし、アップロードしたファイルは3ファイル中、1ファイル問題なし2ファイルは複数アップロードされていました。
内部的には別ファイルで再アップロードが行なわれているために複数のファイルが存在してしまうようです。
複数アップロードされるとたとえば動画ファイル名が「AAA.mp4」と「AAA_0.mp4」となり、動画プレイヤーに使われるビデオファイル名が「AAA_0.mp4」のほうになってしまうことがあります。安易に削除したりするとシステム内で不整合が発生し再生できなくなります。
ファイルフィールドにどちらが登録されているのかもケースバイケースのようですので手修正はかなり面倒になります。
そもそも完全にアップロードが完了しているのか(ファイルサイズが正しいのか)を毎回チェックしなければなりません。
確実ではありませんが、失敗するケースはビデオファイルをアップロード中に別のファイルアップロード操作(たとえば画像ファイルのアップロード)を行なうと発生するようにも思います。
症状は緩和されたのかなぁ程度でまだ安定してアップロードできる状態ではありません。
サーバ側の負荷の影響も受けているかもしれませんので時間帯などで発生頻度に変化があるかもしれません。

(4)uploadprogressバーが表示されずアニメーションになる

パッチによりFixしていましたが、7.10コアでもFixされていることが確認できました。

(5)MediaBrowserにあるアップロードしたファイルが削除できない

MediaBrowserの一覧にある中で削除できないのはフィルサイズが0バイトのものです。
(ほとんどがRSSフィードからノードを作成したもののノードタイトル名でimage/jpgとして登録されています。)
そもそもなぜそれが登録されるのかが不明です。
削除はデータベーステーブルを操作して行ないました。

(6)CSVファイルやXMLファイルなどインポートに使ったファイルが一覧に表示される

Node Convertモジュールでインポートファイルに使ったファイルがMedia Browserの一覧に登録されます。
File Entityモジュールを導入しているので仕様なのかもしれません。

(7)Media:Yotubeを使ったリモートサイトの画像URLから画像ファイルがダウンロードできない

内部で生成される画像ファイルのパス名がよくないためかコアのファイルサイズチェックでエラーになります。
これについてはMediaのバージョンを最新版にしましたが事象に変化はありませんでした。
どちらかというとMedia:YouTubeのほうに問題があるのかもと推測しますが、環境の影響もまだ可能性があるため難題です。

(1)や(3)のファイルフィールドを利用したファイルのアップロード関連が安定しなければ余計なデータをシステムに入力してしまうことになり、その修正を手直しでといったムダの極みな状況になります。
どこか根本的なところにミスがあるのではないだろうかとも思っているのですが、Apacheサーバの設定(レンタルサーバの仕様上.htaccessでできる範囲しか無理ですが)やphp.iniが怪しい感じもします。
もう一度、サーバ環境設定の箇所をチェックしてみます。


2012.01.18 (7)の件について解決

原因はphp.iniに記述した以下の2つのディレクティブだったようです。

	allow_url_fopen = off
	allow_url_include = off

さくらのレンタルサーバでデフォルトのphp.iniを使用するように戻すと問題なく動作しました。
ということは自分で作成したphp.iniにどこかまずいところがあるということです。
そういえば、Acquia Drupalではphp.iniはデフォルトを使用していました・・・

必要性を理解せずに追加したといえば上記2行でしたので、早速無効にして試すと問題なく動作しました。

デフォルトではallow_url_fopenはOnでallow_url_includeはOffですので、allow_url_fopenをOffにしたため問題が発生していたことになります。

ダメだったMedia Contentもうまく導入でき、Feedsで作成したYouTube動画も画像が表示されフロントページが意図する通りになりました。

これにより(3)だけが気がかりですが、先にすすめることにしました。
動画公開に関する機能のテストはできたのでDrupal7の動画サイトについてはこれで終了にしたいと思います。

次はテーマなどレイアウトに関する箇所を行ないたいので、それに併せて携帯サイトの構築についてDrupal7のテーマではどうであるかを調査するために、以前中止にした携帯サイトの連載記事を再開しようと思います。

Drupalバージョン

Drupal 6.x Drupal 7.x