|
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 GroupAll rights reserved. |
Last updated: Thu Oct 30 16:00:01 2025 UTC |
You're recursing infinitely over the same directory. Try: if($directory===null){ $directory = realpath('.') . DIRECTORY_SEPARATOR . 'content' . DIRECTORY_SEPARATOR; }