我最近升級到OSX小牛,從那以後,我開始在我的開發機器上得到上述錯誤。代碼中沒有明顯的問題(這是一個自動生成的Yii示例應用程序)。作爲升級到小牛的一部分發生了什麼:Apache PHP/OSX小牛: - 未能打開流:太多打開的文件
- PHP從5.2.x與OSX Lion捆綁在一起升級到5.4.x.
- 我必須通過安裝Zend Server來獲取Zend Debugger for PHP 5.4,拿起ZendDebugger.so並卸載Zend Server(這一切都是因爲Zend沒有提供用於php 5.4.x的獨立版本的調試器)。
從那以後,我在加載和重新加載網站幾次後出現此問題。發生此錯誤後,我的Web服務器不斷爲本地主機上託管的任何其他應用程序返回相同的錯誤。我不得不提到,靜態網頁服務很好。
我在這個主題上看過幾個threads。大多數代碼指出文件句柄未正確關閉的代碼中的問題,從而超過了打開的文件限制閾值。我也發現這thread似乎暗示這可能是一個zend調試器問題。還有一個bug report爲php 5.2.x提交。繼線程here,我試過如下:
$ ulimit -a
其中報道:
open files (-n) 256
此外,
sysctl -a | grep files
回報,
kern.maxfiles = 12288
kern.maxfilesperproc = 10240
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
kern.num_files: 3248
另一個有趣thread建議提高這一限制使用(目前爲256):
ulimit -n 1024
我用盡了一切辦法,但似乎沒有奏效。這個問題也不一致可重現。
我在想使用ulimit -n 1024
會影響apache,因爲從我讀過的內容來看,它會影響shell可以打開的文件數量。
任何幫助表示讚賞。
編輯:
- 重啓
apache
幫助了一會兒,直到再次遇到錯誤。 - 使Web服務器空閒一段時間(沒有確定的時間間隔)也有幫助。
這爲我解決了這個問題。自從我再次看到該錯誤以來,已經過去了一個多月。 –