Estoy ejecutando Mac OS X 10.9.4, incluido el servidor web incorporado apache2 con PHP 5.5.14 de brew (paquetes: php55, php55-intl, php55-pdo-pgsql, php55-xdebug).
Al ejecutar esta configuración, funciona bastante bien. Sin embargo, después de algún tiempo, ejecutaré 403 errores por cada solicitud. He buscado el registro de errores de apache y he encontrado algo como lo siguiente:
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Warning: require_once(/Users/daniel/Development/massiveart/sulu-complete/app/bootstrap.php.cache): failed to open stream: Too many open files in /Users/daniel/Development/massiveart/sulu-complete/web/website.php on line 10, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Stack trace:, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP 1. {main}() /Users/daniel/Development/massiveart/sulu-complete/web/website.php:0, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Fatal error: require_once(): Failed opening required '/Users/daniel/Development/massiveart/sulu-complete/web/../app/bootstrap.php.cache' (include_path='.:/usr/local/Cellar/php55/5.5.14/lib/php') in /Users/daniel/Development/massiveart/sulu-complete/web/website.php on line 10, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Stack trace:, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP 1. {main}() /Users/daniel/Development/massiveart/sulu-complete/web/website.php:0, referer: http://sulu.lo/de
[Fri Jul 25 05:28:40 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
[Fri Jul 25 05:28:41 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
[Fri Jul 25 05:28:41 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
[Fri Jul 25 05:28:41 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
[Fri Jul 25 05:28:45 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
[Fri Jul 25 05:28:45 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
Me parece que el archivo ya no se puede leer, y devuelve el 403 de alguna manera. Ya descubrí ciertos límites, pero launchctl devuelve que tengo un límite estricto ilimitado en los archivos abiertos:
~ $ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 709 1064
maxfiles 256 unlimited
También he intentado establecer los maxfiles en 4096 con el comando launchctl limit maxfiles 4096 16384
, pero el problema aún regresa después de un tiempo. ¿Alguna idea de qué más puedo consultar?
ACTUALIZACIÓN : Al ejecutar el lsof -c httpd
comando sugerido por Gordon Davisson, puedo ver que hay muchas entradas como las siguientes:
httpd 1361 _www 15u IPv4 0xb306b48659f63853 0t0 TCP localhost:50603->localhost:cslistener (CLOSED)
Puedo decir que la aplicación que uso está usando WebSockets, y también está utilizando un recurso alternativo cuando WebSocket no está disponible o la contraparte no se está ejecutando en el servidor. Lo que me confunde es la parte (CLOSED)
, ¿por qué sigue en la lista?
ACTUALIZACIÓN : Después de un tiempo busqué el puerto cslistener, que en realidad es 9000, que de nuevo es qué puerto xdebug está escuchando para la depuración remota. Así que supongo que tengo una configuración incorrecta allí, o es un error en xdebug (estoy usando XDebug 2.2.5, instalado por brew)