我昨天在调试一个情况,当我上传文件时,运行lighttpd和fastcgi导致500错误。仔细检查表明,文件确实正在上传,甚至保存到Mongo数据库的后端,但仍然抛出500错误。MongoDB在文件保存时崩溃PHP,500错误;可以检索保存的文件没有问题
所以今天我切换到apache,我们已经在另一个系统上工作,但仍然出现错误,而是提供了一个'空的响应'。经过一番调查后,我发现将文件保存到Mongo数据库时似乎发生了这种情况。我的代码如下:
$file = File::create();
$file->save(array('file'=>$data['file']));
它出现在保存文件数据创建的文件时,不过是罚款,这似乎向进入没有问题的数据库,但我不认为它会返回正常。看着蒙戈日志,这似乎每个数据库后保存:
run command my_db.$cmd { getlasterror: 1 }
所以这样看来,问题在于MongoDB的抛出一些形式的错误,当一个文件被保存到GridFS的 - 有没有人碰到过这样的问题来了在此之前可能会干扰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,所以甚至没有大文件。
这是AWS EC2上运行,用PHP 5.3.10和MongoDB 2.0.4
进一步更新:
刚开始尝试做这个尽可能简明,并得到答复,我有什么似乎确定的是,MongoDB在将文件保存在导致PHP崩溃问题的数据库中后正在做一些事情。
一旦文件被保存,我可以在没有任何问题的情况下检索它,它似乎最初将它保存到数据库,它导致PHP崩溃并提供500错误。
感谢您的链接 - 但它似乎是在mongo.so PHP扩展中的错误。我的登台服务器上有一个较旧的服务器,这就是为什么它正在工作,但已恢复到1.27,所有工作都重新开始:) – Dan 2012-03-27 15:03:47