【发布时间】:2013-11-15 00:20:07
【问题描述】:
我最近升级到 OSX Mavericks,从那时起,我的开发机器上开始出现上述错误。代码中没有明显的问题(它是一个自动生成的Yii 示例应用程序)。作为升级到 Mavericks 的一部分发生的情况是:
- 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 上托管的任何其他应用程序返回相同的错误。我不得不提一下,静态网页服务很好。
我见过几个关于这个话题的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会有所帮助,直到再次遇到错误。 - 让网络服务器闲置一段时间(没有明确的时间间隔)也有帮助。
【问题讨论】: