我最近升级到 OSX Mavericks,从那时起,我的开发机器上开始出现上述错误。代码中没有明显的问题(它是一个自动生成的Yii示例应用程序)。作为升级到小牛队的一部分发生的事情是:
- PHP 从与 OSX Lion 捆绑的 5.2.x 升级到 5.4.x。
- 我必须通过安装Zend Server、获取 ZendDebugger.so 并卸载 Zend Server来获得 PHP 5.4 的 Zend 调试器(这一切都是因为 Zend 没有为 php 5.4.x 提供独立版本的调试器)。
从那以后,我可能在加载和重新加载网站几次后遇到了这个问题。发生此错误后,我的 Web 服务器不断为 localhost 上托管的任何其他应用程序返回相同的错误。我不得不提到静态网页服务很好。
我已经看到了关于这个主题的几个主题。大多数人指出代码中文件句柄未正确关闭的问题,从而超过了打开文件限制阈值。我还发现这个线程似乎表明这可能是一个 zend 调试器问题。还有一个针对 php 5.2.x的错误报告。按照这里的线程,我尝试了以下操作:
$ 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
另一个有趣的线程建议使用以下方法提高此限制(当前为 256):
ulimit -n 1024
我已经尝试了一切,但似乎没有任何效果。该问题也不能始终如一地重现。
我想知道使用ulimit -n 1024
会影响 apache,因为从我读过的内容来看,它会影响 shell 可以打开的文件数量。
任何帮助表示赞赏。
编辑:
- 重新启动
apache
会有所帮助,直到再次遇到错误。 - 让 Web 服务器闲置一段时间(没有明确的时间间隔)也有帮助。