0

1.3.4 ドライバーとLithium PHP フレームワークを使用して MongoDB GridFS コレクションから画像をフェッチしようとすると、壊れた画像が表示されます。問題のサイトはまだ公開されていませんが、変更のたびにサイト全体のスモーク テストを行っておらず、テスト ケースがどれも失敗していないため、これがいつ発生し始めたのかを特定するのに苦労しています (私よりもphpテストケースを作成すると、おそらく読んだ後にこれのテストケースを作成する方法を教えてくれるでしょう)。

少し前までは、画像は実際に正しくレンダリングされていました。クラウドベースのデータベースであるMongoHQ、mongodbバージョン2.4.1を使用しています。

Web アプリから取得した画像に対して wget hex ダンプを実行すると、次のようになります。

0000000 0a ff d8 ff e1 0f fe 45 78 69 66 00 00 4d 4d 00
0000010 2a 00 00 00 08 00 0a 01 0f 00 02 00 00 00 06 00
0000020 00 00 86 01 10 00 02 00 00 00 0a 00 00 00 8c 01
0000030 12 00 03 00 00 00 01 00 08 00 00 01 1a 00 05 00
0000040 00 00 01 00 00 00 96 01 1b 00 05 00 00 00 01 00
0000050 00 00 9e 01 28 00 03 00 00 00 01 00 02 00 00 01
0000060 31 00 02 00 00 00 06 00 00 00 a6 01 32 00 02 00
0000070 00 00 14 00 00 00 ac 02 13 00 03 00 00 00 01 00
0000080 01 00 00 87 69 00 04 00 00 00 01 00 00 00 c0 00
0000090 00 00 00 41 70 70 6c 65 00 69 50 68 6f 6e 65 20

しかし、静的ファイル(データベースからフェッチされていない)で wget を実行すると、次のようになります。

0000000 ff d8 ff e1 0f fe 45 78 69 66 00 00 4d 4d 00 2a
0000010 00 00 00 08 00 0a 01 0f 00 02 00 00 00 06 00 00
0000020 00 86 01 10 00 02 00 00 00 0a 00 00 00 8c 01 12
0000030 00 03 00 00 00 01 00 08 00 00 01 1a 00 05 00 00
0000040 00 01 00 00 00 96 01 1b 00 05 00 00 00 01 00 00
0000050 00 9e 01 28 00 03 00 00 00 01 00 02 00 00 01 31
0000060 00 02 00 00 00 06 00 00 00 a6 01 32 00 02 00 00
0000070 00 14 00 00 00 ac 02 13 00 03 00 00 00 01 00 01
0000080 00 00 87 69 00 04 00 00 00 01 00 00 00 c0 00 00
0000090 00 00 41 70 70 6c 65 00 69 50 68 6f 6e 65 20 34

diff は、先頭の「0a」と末尾の「34」です。

関連する fs.files データを取得しています。例えば:

{
  _id: ObjectId("519e31d39bdd497903000007"),
  tags: [
    "mancave"
  ],
  location: [],
  title: "Test Live Site",
  description: "This is for testing the live site",
  credit: "Test",
  user_name: "chuckwh",
  filename: "dog.jpg",
  uploadDate: ISODate("2013-05-23T15:12:19.000Z"),
  length: 86486,
  chunkSize: 262144,
  md5: "88d87a79a98106502777d06a4c7db329"
}

そして、明らかに、16 進ダンプは、基本的に画像も取得していることを示しています。それは、破損したバージョンを取得しているように見えるだけです。スタック トレースに問題を示すものは何もありません。

Lithium 関係者が Mongo DB にパッチを追加してプレフィックスをより適切に処理していることに気付きましたが、名前空間の問題が発生する可能性がなく、fs.files を取得するだけで、難しいことは何もしていません。

以前は機能していたので、php ドライバーの問題が疑われますが、既知の問題が Google またはここで話題になっているようには見えません。mongodb バージョン 2.4.1、GridFS、および 1.3.4 ドライバーに関連する php ドライバーの問題を知っている人はいますか?

コードに関する限り、私はここで行われているようにほとんどやっています:

https://github.com/nateabele/photoblog/blob/master/controllers/PhotosController.php

そのリンクのコントローラーは、動作などのコア リチウム パッケージに付属していないリチウム ライブラリを 1 つまたは 2 つ含むモデルを参照していますが、これは最近まで機能していたことを強調します。サイトのこの部分は、サイトの残りの部分からかなりうまくサイロ化されています。私が行った唯一のルーティングの変更は、ページネーションを追加することでしたが、コメントアウトしましたが、まだエラーが発生しています。この質問が「整形式」であることを願っています。私が探しているのは、特定の解決策ではなく、どこを見るべきかについてのいくつかの指針だと思います。これまでのところ、明らかに適切な場所を探していないからです。ありがとう

4

1 に答える 1