J'ai récemment effectué une mise à niveau vers OSX Mavericks et, depuis lors, j'ai commencé à obtenir l'erreur susmentionnée sur ma machine de développement. Il n'y a pas de problème évident dans le code (c'est une application générée automatiquement Yii ). Ce qui s'est passé dans le cadre de la mise à niveau vers Mavericks est le suivant:
Depuis, je reçois ce problème après avoir peut-être chargé et rechargé le site plusieurs fois. Après cette erreur, mon serveur Web renvoie la même erreur pour toute autre application hébergée sur localhost. Je dois mentionner que les pages Web statiques sont bien servies.
J'ai vu plusieurs discussions sur ce sujet. La plupart soulignent les problèmes de code dans lesquels les descripteurs de fichier ne sont pas fermés correctement, franchissant ainsi le seuil de limite de fichier ouvert. J'ai aussi trouvé ce thread qui semble suggérer que cela pourrait être un problème de débogage de zend. Il y a aussi un rapport de bogue filed pour PHP 5.2.x. En suivant le fil ici , j’ai essayé ce qui suit:
$ ulimit -a
qui rapporte:
open files (-n) 256
Également,
sysctl -a | grep files
résultats,
kern.maxfiles = 12288
kern.maxfilesperproc = 10240
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
kern.num_files: 3248
Un autre intéressant thread suggère d’augmenter cette limite (actuellement 256) en utilisant:
ulimit -n 1024
J'ai tout essayé, mais rien ne semble fonctionner. Le problème n'est également pas toujours reproductible.
Je me demande si l'utilisation de ulimit -n 1024
va affecter Apache, car de ce que j'ai lu, cela affecte le nombre de fichiers que Shell peut avoir ouverts.
Toute aide est appréciée.
MODIFIER:
Apache
aide un peu, jusqu'à ce que l'erreur se reproduise.Je souffrais probablement d'une surcharge d'informations. Une explication possible est proposée ici que j'ai également mentionnée dans mon message original. J'imagine que j'ai raté le petit détail où OP indique qu'il travaille sur Mac OSX 10.8.x. Je suis sur 10.9 alors j'ai téléchargé le fichier zenddebugger.so de la page et tout va bien. N'a pas eu un seul too many open files
toute la journée.
Donc, peut-être que c'était un problème de ZendDebugger.
Volé sans vergogne à http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/#Mac-OS-X
Pour vérifier les limites actuelles sur votre système Mac OS X, exécutez:
$ launchctl limit maxfiles
Les deux dernières colonnes sont respectivement les limites soft et hard.
Pour ajuster les limites maximales de fichiers ouverts dans OS X 10.7 (Lion) ou une version plus récente, éditez /etc/launchd.conf et augmentez les limites des deux valeurs selon vos besoins.
Par exemple, pour définir la limite logicielle sur 16384 fichiers et la limite stricte sur 32768, procédez comme suit:
Vérifier les limites actuelles:
$ 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 10240 10240
Editez (ou créez) /etc/launchd.conf et augmentez les limites. Ajoutez des lignes qui ressemblent à ce qui suit (en utilisant des valeurs appropriées à votre environnement):
limit maxfiles 16384 32768
Enregistrez le fichier et redémarrez le système pour que les nouvelles limites prennent effet. Après le redémarrage, vérifiez les nouvelles limites avec la commande launchctl limit:
$ 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 16384 32768
Si vous rencontrez ce problème lors de l'exécution d'Apache, vous pouvez configurer Apache pour augmenter la limite:
$ Sudo vi /usr/sbin/apachectl
localisez: ULIMIT_MAX_FILES=""
et changez cette ligne en quelque chose comme:
ULIMIT_MAX_FILES="ulimit 4096"
Puis: Sudo apachectl restart
Cela ne fonctionnera pas pour les scripts CLI. Mais ajouter un ulimit directement à votre ~/.bash_profile
(ou l’équivalent) devrait fonctionner à cette fin.
Cela présente l'avantage de définir des limites spécifiques pour Apache et votre terminal sans affecter les autres applications.
En outre, vous devriez pouvoir adapter cette méthode à d’autres systèmes d’exploitation en remplaçant ulimit
par la commande applicable à cet environnement.
Je rencontrais le même problème sur El Capitain. J'ai trouvé un article ici Je dois tout crédit à la solution. Suivez les actions ci-dessous:
Réglage des limites de fichiers ouvertsPour ajuster les limites de fichiers ouverts sur l'ensemble du système sous Yosemite et au-dessus, vous devez créer deux fichiers de configuration. Le premier est un fichier de liste de propriétés (ou plist) dans /Library/LaunchDaemons/limit.maxfiles.plist qui contient la configuration XML suivante:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>65536</string>
<string>65536</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
Cela définira la limite de fichiers ouverts sur 65536. Le deuxième fichier de configuration de plist doit être stocké dans /Library/LaunchDaemons/limit.maxproc.plist avec le contenu suivant:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxproc</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxproc</string>
<string>2048</string>
<string>2048</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>
Les deux fichiers plist doivent appartenir à root: wheel et disposer des autorisations -rw-r – r–. Redémarrez le système.
Il est également recommandé de les configurer pour la session utilisateur dans .bashrc et d'ajouter:
ulimit -n 65536
ulimit -u 2048
J'espère que cela t'aides.
En ce qui concerne le correctif du débogueur, répondez ci-dessus. Malheureusement, la réponse fournie ci-dessus ne fonctionnera pas pour moi, car elle s'applique aux versions 5.4 de PHP et que je dois me limiter à 5.3.
Zend a publié la version 6.3 de son serveur, qui supporte php en 5.3. Cela fait un petit moment que je joue à l’installation (après avoir remis mon ulimit au réglage par défaut d’Apple) pour le tester et je n’éprouve aucun problème. Avant la mise à niveau, je ne pouvais pas faire de débogage php sans augmenter cette limite.
Per http://forums.zend.com/viewtopic.php?t=110823&start=10#p219438 Je pense que c'était vraiment juste un bug dans Zend Server qui a été corrigé dans la version 6.2.
Vous rencontrez la même erreur en exécutant xDebug . Une mise à niveau a résolu le problème.
voir: