Фатальная ошибка - Слишком много открытых файлов

Я пытаюсь запустить Тесты PHPUnit в своей новой машине, и я получаю эту ошибку:

Фатальная ошибка PHP: Неперехваченное исключение 'UnexpectedValueException' с сообщением 'RecursiveDirectoryIterator:: __ конструкция (/usr/lib/php/pear/File/Iterator): был не в состоянии открыть директора: Слишком много открытых файлов в/usr/lib/php/pear/File/Iterator/Factory.php:114

Тот же самый код по старой машине, которой управляют хорошо...

Новая машинная окружающая среда: Версия PHP: PHP 5.3.21 (cli) Более старый: PHP 5.3.14

PHPUnit производят каждый раз:

................EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 65/66 ( 98%)
E

Time: 34 seconds, Memory: 438.50Mb

There were 50 errors:

1) XXXXXXXXXXX
PHP Fatal error:  Uncaught exception 'UnexpectedValueException' with message 'RecursiveDirectoryIterator::__construct(/usr/lib/php/pear/File/Iterator): failed to open dir: Too many open files' in /usr/lib/php/pear/File/Iterator/Factory.php:114
21
Вы забываете звонить fclose ?
добавлено автор h2ooooooo, источник
fclose? жаль, но я don' t понимают ваш совет
добавлено автор Mauro, источник

4 ответы

Это может быть ограничением на сервер, куда код бежит. Каждая операционная система только допускает определенное число открытых файлов/ручек/гнезд. Этот предел обычно далее уменьшается, когда сервер виртуализируется. На сервере Linux можно согласовать текущий предел с ulimit-n , если у вас есть доступ корня, можно увеличить его с той же самой командой. Я предполагаю, что есть метод для Windows Server также. Иначе нет очень, можно делать с этим (кроме, просят hoster или администратор увеличивать его).

Более конфигурируемые ограничения:

In /etc/security/limits.conf 
  soft nofile 1024 
  hard nofile 65535 
Increase ulimit by "ulimit -n 65535" 
echo 65535 > /proc/sys/fs/file-max 
In /etc/sysctl.conf 
  fs.file-max=65535 
39
добавлено
@Mauro я добираюсь 4864 на Индивидуалистах (OSX 10.9)
добавлено автор JamesHalsall, источник
256 не очень
добавлено автор Gerald Schneider, источник
$ ulimit-n> 256. I' m на OSX
добавлено автор Mauro, источник
@JamesHalsall I' m использование 1024 теперь
добавлено автор Mauro, источник

В PHP, перед выполнением, попробуйте это

exec('ulimit -S -n 2048');
2
добавлено
Этот doesn' t работают на меня. Попробованный, чтобы добавить эту линию в оба установка() и setUpBeforeClass() методы. Выполнение его вручную на терминале прежде, чем начать тесты единицы действительно работает как бы то ни было.
добавлено автор Koen, источник

Не храните объекты DirectoryIterator на потом; вы получите ошибку при высказывании "слишком многих открытых файлов", когда вы сохраните больше, чем предел операционной системы (обычно 256 или 1024).

Например, это приведет к ошибке, если у справочника будет слишком много файлов:

<?php 
$files = array(); 
foreach (new DirectoryIterator('myDir') as $file) { 
    $files[] = $file; 
} 
?>

По-видимому, этот подход интенсивно использующий память также.

source: http://php.net/manual/pt_BR/directoryiterator.construct.php#87425

1
добавлено

Как может вы файл открытый предел (Linux или Макс ОС):

ulimit -n 10000

Solves problem with phpunit or/and phpdbg and Warning: Uncaught ErrorException: require([..file]): failed to open stream: Too many open files in [...]

0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp