我昨天在調試一個情況,當我上傳文件時,運行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