|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2014-05-03 10:31 UTC] ignesia at gmail dot com
 Description:
------------
PHP crashes from "too many files open" when there is a minimum of 1 directory present.
ulimit -n = 1024
Test script:
---------------
function recursiveDirectoryIterator($directory = null, $files = array()) {
	$directory = realpath('.') . DIRECTORY_SEPARATOR . 'content' . DIRECTORY_SEPARATOR;
    $iterator = new DirectoryIterator($directory);
    foreach ($iterator as $info) {
        if ($info->isFile ()) {
            $files[$info->__toString ()] = $info;
        } elseif (!$info->isDot ()) {
            $list = array($info->__toString () => recursiveDirectoryIterator(
                        $directory.DIRECTORY_SEPARATOR.$info->__toString ()
            ));
            if(!empty($files))
                $files = array_merge_recursive($files, $filest);
            else {
                $files = $list;
            }
        }
    }
    return $files;
}
Expected result:
----------------
List all directories and files into an array recursively.
Actual result:
--------------
PHP Fatal error:  Uncaught exception 'UnexpectedValueException' with message 'DirectoryIterator::__construct(/home/httpd/public_html/docs/content/): failed to open dir: Too many open files' in /home/httpd/public_html/docs/index.php:65\nStack trace:\n#0 /home/httpd/public_html/docs/index.php(65): DirectoryIterator->__construct('/home/httpd/pub...')\n#1 /home/httpd/public_html/docs/index.php(73): recursiveDirectoryIterator('/home/httpd/pub...')\n#2 /home/httpd/public_html/docs/index.php(73): recursiveDirectoryIterator('/home/httpd/pub...')\n#3 /home/httpd/public_html/docs/index.php(73): recursiveDirectoryIterator('/home/httpd/pub...')\n#4 /home/httpd/public_html/docs/index.php(73): recursiveDirectoryIterator('/home/httpd/pub...')\n#5 /home/httpd/public_html/docs/index.php(73): recursiveDirectoryIterator('/home/httpd/pub...')\n#6 /home/httpd/public_html/docs/index.php(73): recursiveDirectoryIterator('/home/httpd/pub...')\n#7 /home/httpd/public_html/docs/index.php(73): recursiveDirectoryIterator('/home/httpd/p in /home/httpd/public_html/docs/index.php on line 65
PatchesPull Requests
Pull requests: HistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 21:00:02 2025 UTC | 
You're recursing infinitely over the same directory. Try: if($directory===null){ $directory = realpath('.') . DIRECTORY_SEPARATOR . 'content' . DIRECTORY_SEPARATOR; }