最近 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 でホストされている他のアプリケーションに対して同じエラーを返し続けます。静的な Web ページは問題なく提供されることに言及する必要があります。
このトピックに関するいくつかのスレッドを見てきました。ほとんどの場合、ファイル ハンドルが適切に閉じられていないため、開いているファイルの制限のしきい値を超えているというコードの問題が指摘されています。また、これが 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に影響を与えるのではないかと思っています。
どんな助けでも大歓迎です。
編集:
- エラーが再び発生するまで、再起動
apache
すると少し役立ちます。 - Web サーバーを少しの間アイドル状態にしておくことも役に立ちます (明確な間隔はありません)。