2012-05-10 14 views
0

を実行したときに、私は教義MongoDBのを使用してSymfony2のプロジェクトに取り組んでいます死にます。私が問題を明らかにした今日まで、すべてのことがうまくいっています。PHPは、教義のMongoDB ODMが成功したファイルのクエリ

1つ以上のレコード/ドキュメントを返すクエリが原因で、PHPプロセスが終了する可能性があります。具体的に言えば、これはと "ファイル"の結果が返されるクエリを伴うです。私はPHPエラーを取得していないし、エラーもApacheのエラーログに記録されていません。

このクエリが実行されるURLにヒットすると、Chromeでnet :: ERR_EMPTY_RESPONSEが表示されます。クエリの直前にecho 'test';exit()でコンテンツを出力することができ、ブラウザにコンテンツが表示されます。クエリの直後に同じecho 'test';exit();行を置くと、空の応答エラーが発生します。

私は自分のコンピュータにLAMPスタックを含む開発環境をセットアップしています。しかし、私はこれをリモートのMongoDBインスタンスに接続するように設定しました。ローカルセットアップを使用してファイルを照会する際に問題はありません。さまざまなサービスのバージョンは、私のコンピュータとサーバーで少し異なります。この観察に基づいて、それはMongoDBサービスの問題ではないようですが、おそらくPHP拡張の問題でしょうか?

私のサーバー上のサービスを使用してファイルを正常に保存できることを追加します。しかし、私は自分のローカルセットアップでデータを照会/取得することしかできません。

PHPがこのように死んだときにログコンテンツが生成されますか?

私は、次のサービスのバージョンを実行しています:

  • OS:Ubuntuの12.04 LTS
  • のApache:2.2.22
  • PHP:5.3.10-1ubuntu3.1
  • MongoのPHP拡張モジュール: 1.2.10
  • のMongoDB-10gen:2.0.5

すべてのヘルプは大幅APだろうpreciated。私は知っているすべてを試して、実際にこれが起こる原因について何か手がかりを見つけることはまだありません。

-

私のモデルは次のようになります。

<?php 

namespace Project\Bundle\Document; 

use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @MongoDB\Document 
*/ 
class File { 

/** 
* @MongoDB\Id(strategy="auto") 
*/ 
protected $id; 

/** 
* @MongoDB\ObjectId 
* @MongoDB\Index 
* @Assert\NotBlank 
*/ 
protected $userId; 

/** 
* @MongoDB\ObjectId 
* @MongoDB\Index 
*/ 
protected $commonId; 

/** 
* @MongoDB\File 
*/ 
public $file; 

/** 
* @MongoDB\String 
*/ 
public $mimeType; 

/** 
* @MongoDB\Hash 
*/ 
public $meta; 

... getters/setters ... 

?> 

私はMongoDBのサーバの冗長ログをオンにし、クエリが正常に動作するように見える:

Wed May 9 20:04:29 [conn1] queryd dbdev.File.files query: { $query: { commonId: ObjectId('4fab01396bd985c215000000'), meta.size: "large" }, $orderby: {} } ntoreturn:1 nreturned:1 reslen:258 0ms 
Wed May 9 20:04:29 [conn1] end connection 127.0.0.1:42087 
Wed May 9 20:04:30 [DataFileSync] flushing mmap took 0ms for 5 files 
Wed May 9 20:04:30 [DataFileSync] flushing diag log 
Wed May 9 20:04:30 [PeriodicTask::Runner] task: WriteBackManager::cleaner took: 0ms 
Wed May 9 20:04:30 [PeriodicTask::Runner] task: DBConnectionPool-cleaner took: 0ms 
Wed May 9 20:04:30 [PeriodicTask::Runner] task: DBConnectionPool-cleaner took: 0ms 
Wed May 9 20:04:30 [clientcursormon] mem (MB) res:46 virt:997 mapped:160 

UPDATE

私はを使用しましたは、Apacheで、次のセグメンテーションフォールトを見つけるために:

en("/opt/dev/app/cache/dev/doctrine/odm/mongodb/Hydrators/ProjectBundleDocumentFileHydrator.php", O_RDONLY) = 28 
fstat(28, {st_mode=S_IFREG|0777, st_size=2462, ...}) = 0 
fstat(28, {st_mode=S_IFREG|0777, st_size=2462, ...}) = 0 
fstat(28, {st_mode=S_IFREG|0777, st_size=2462, ...}) = 0 
fstat(28, {st_mode=S_IFREG|0777, st_size=2462, ...}) = 0 
mmap(NULL, 2462, PROT_READ, MAP_SHARED, 28, 0) = 0x7fa3ae356000 
munmap(0x7fa3ae356000, 2462)   = 0 
close(28)        = 0 
--- SIGSEGV (Segmentation fault) @ 0 (0) --- 
chdir("/etc/apache2")     = 0 
rt_sigaction(SIGSEGV, {SIG_DFL, [], SA_RESTORER|SA_INTERRUPT, 0x7fa3b3ce4cb0}, {SIG_DFL, [], SA_RESTORER|SA_RESETHAND, 0x7fa3b3ce4cb0}, 8) = 0 
kill(5020, SIGSEGV)      = 0 
rt_sigreturn(0x139c)     = 0 
--- SIGSEGV (Segmentation fault) @ 0 (0) --- 
Process 5020 detached 

答えて

1

これは私が5月3日に修正したバグのように聞こえます。私はgithub(v1.2ブランチ!)の最新バージョンを試してみることをお勧めします。また、phpinfo()セクションを "mongodb"に含めることにも役立ちます。それでも問題が解決しない場合は小文字の再現可能なスクリプトhttp://jira.mongodb.org/browse/PHPでバグレポートを提出してください。

+0

https://jira.mongodb.org/browse/PHP-369 - 私はPHP Mongo拡張バージョン1.2.09にロールバックして、今は正常に動作します。物事を簡単にするため、公式のPECLアップデートがリリースされるのを待つつもりです。ありがとう! –

+0

githubから試してみてください。本当に修正されています! – Derick

関連する問題