私はファイルをアップロードしていたときに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エラーが発生しています。
リンクをありがとう - しかし、それはmongo.so PHP拡張モジュールのバグのようです。私は私のステージングサーバー上に古いものを持っています。それがなぜ機能していたのですか?しかし、1.27に戻って、もう一度作業しています:) – Dan