2012-03-24 19 views
2

私はファイルをアップロードしていたときにlighttpdとfastcgiを実行していると500エラーが発生していた昨夜の状況をデバッグしていました。より詳細な検査では、ファイルが実際にアップロードされていて、Mongoデータベースのバックエンドに保存されていたものの、まだ500エラーが発生していました。MongoDBがファイルを保存する際にPHPをクラッシュ、500エラー。問題なしで保存されたファイルを取得することができます

今日、別のシステムで作業していたApacheに切り替えましたが、まだエラーが発生しています。代わりに「空の応答」が表示されます。ちょっとした調査の後、ファイルをMongoデータベースに保存するときに発生するように見えました。次のように私のコードは次のとおりです。

$file = File::create(); 
$file->save(array('file'=>$data['file'])); 

しかし、ファイルデータを保存するには、それが問題なくデータベースに入っているようだが、私はそれを返すとは思わない、ファイルを作成するときに細かいように見えます正しく。 Mongoのログを見ると、これは保存し、すべてのデータベースの後に表示されます:

run command my_db.$cmd { getlasterror: 1 } 

は、だから、問題は、ファイルがGridFSに保存されたときのMongoDBは、エラーのいくつかのフォームを投げてあるように思われる - 誰もがこのような問題に遭遇しましたその前にPHPに干渉して本質的にクラッシュする可能性がありますか?

おかげで、

ダン

(ジャスト言及する - 私はリチウムPHPフレームワーク、およびMongoDBの64ビット版を使用しています)。

更新:lighttpdのを実行しているときに

だけで起こっていただきました!をより徹底するためには、私は、アップロード時にこのエラーを取得:モンゴで

2012-03-24 13:14:42: (mod_fastcgi.c.2566) unexpected end-of-file (perhaps the fastcgi process died): pid: 21279 socket: unix:/tmp/php.socket-1 
2012-03-24 13:14:42: (mod_fastcgi.c.3354) response not received, request sent: 51519 on socket: unix:/tmp/php.socket-1 for /index.php?url=campaign/edit/4f6cf84ca8b057ee17000000, closing connection 

の保存データは問題なく行く、それだけのアップロードファイルされ、問題のファイルサイズは45Kだから、大きなファイルでさえない。

これはPHP 5.3.10とMongoDBの2.0.4で、AWS EC2上で実行されている

さらに更新:

ただ、試してみて、可能な限り、これはのように簡潔に、そして応答を得るために、私が持っているものMongoDBがPHPのクラッシュの問題を引き起こしているデータベースにファイルが保存された後に何かをやっていると判断したようです。

一度ファイルが保存されたら、何も問題なく取り出すことができます。最初はデータベースに保存しているようで、PHPがクラッシュして500エラーが発生しています。

答えて

2

私は最近、同じ問題何ができるかに直面:

PHPは、様々な構成でセグメンテーションフォルトました。 LighttpdとApacheの下で、x86とx64プラットフォーム間でFCGIモードでPHPを実行しています。

原因は、php-mongoドライバ(PECLからインストールされました)です。バージョン1.2.8と1.2.9では、segfaultが発生します。データが正しく保存されているように見えるため、GridFSへの保存が完了した後であったと思います。

バージョン1.2.7はちょうどいいでした。

1

PHPがgetLastErrorコマンドをサポートしているかどうかを見て、返されたオブジェクトを見て何が間違っているのかを確認してください。

いくつかの便利なリンク:

は、ファイルを挿入するには、コマンドラインからmongofilesを使用してみましたか?

+0

リンクをありがとう - しかし、それはmongo.so PHP拡張モジュールのバグのようです。私は私のステージングサーバー上に古いものを持っています。それがなぜ機能していたのですか?しかし、1.27に戻って、もう一度作業しています:) – Dan

関連する問題