How to create a list of all sub-Directories?

Posted on 2006-06-19
Last Modified: 2010-05-18
I need to create a list of all sub-Directories in
but it seems my knowledge of php is not enough for this task.

if the images directory contains two subdirectories, I need to have a variable
containing the names of the sub-directories.

Any kind of help is much appreciated.

Question by:MnInShdw
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
  • 2
LVL 49

Assisted Solution

Roonaan earned 250 total points
ID: 16939587
function subDirs($mainDir) {
  // See if the maindir exists
  if(!is_dir($mainDir)) return false;
  // Create a handler to the directory
  $d = opendir($mainDir);
  // If handle fails, return false
  if(!$d) return false;
  // Storage variable
  $subdirs = array();
  // Read file and directorynames from $mainDir
  while($f = readdir($d)) {
    if($f == '..' || $f = '.') continue; //skip parent and current dir indicators
    if(is_dir($mainDir.'/'.$f)) $subdirs[] = $f;
  // Return our subdirs storage variable
  return $subdirs;

// Read subdirs in folder images
$subdirs = subDirs('images');


Author Comment

ID: 16939667
Hi Roonaan and thanks for trying to help

I tried your code but unfortunately I'm not able to make it work.
There's 2 problems.

1- I added print_r($subdirs) as the last line of your code, but it displays a blank array     array()

2- the second problem is when I try to run this code on a directory with 711 permission, I receive
    the following error
Warning: opendir(images/): failed to open dir: Permission denied
in /hsphere/local/home/mydomain/ on line 8
Array ( )

any kind of furter assist is much appreciated
LVL 49

Expert Comment

ID: 16939688
711 might be too tight. Note that most of the time php is run from the apache user, which most of the time is not in the group with the actual file/directory owner.

Salesforce Has Never Been Easier

Improve and reinforce salesforce training & adoption using WalkMe's digital adoption platform. Start saving on costly employee training by creating fast intuitive Walk-Thrus for Salesforce. Claim your Free Account Now


Author Comment

ID: 16939726
I changed the permission to 744 and the script doesn't cause errors
but still the array is empty.
this is the structure of directories

ram ----> images   ----> thumbs1
                            ----> thumbs2
                            ----> thumbs3

your script is saved as test.php in ram directory.


Expert Comment

ID: 16939770
If you need more than just listing of subfolders, then, I suggest you to look at this class:

Author Comment

ID: 16939829
hello ixti

thank you for helping. the site you mentioned needs subscribing
and they don't accept free mails such as msn-hotmail-gmail....

I had to use a pop3 account and now they say I have to wait for 24
hours for being checked by admins. later on if I came out ok I'll be
allowed to download the class zip.


Accepted Solution

ixti earned 250 total points
ID: 16939993
I'm registered there. I don't know why, but I can't paste that class here (when I'm trying - error happens ('Queston ID not found...')
So I'll paste it on pastebin:

Author Comment

ID: 16940153
Million thanks for your help

Featured Post

Secure Your WordPress Site: 5 Essential Approaches

WordPress is the web's most popular CMS, but its dominance also makes it a target for attackers. Our eBook will show you how to:

Prevent costly exploits of core and plugin vulnerabilities
Repel automated attacks
Lock down your dashboard, secure your code, and protect your users

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to dynamically set the form action using jQuery.

631 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question