470,848 Members | 1,817 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,848 developers. It's quick & easy.

why would a directory fail the is_dir() test?

In the function below, before I open the directory I first test to
make sure the address I have is, in fact, a directory. This function
was working fine on one web server running FreeBSD and PHP 4.06.
However, today I'm trying to run this software on a new server (RH
Linux 9, PHP 4.2.3) and the directory is failing the is_dir() test.
The error message that I have in my code is printing out this error:

In getListOfAnyDirectory(), we expected the function to be handed an
address to a directory, but instead we were given this:
ppArrangementsPublic/.
Now, ppArrangementsPublic/ looks like a directory to me. So why is it
failing the test?


function getListOfAnyDirectory($address=false) {
// 03-17-04 - this function should be given an address to a folder.

$controllerForAll = & getController();
$resultsObject = & $controllerForAll->getObject("McResults", " in
getListOfAnyDirectory().");
$theDirFilesArray = array() ;

$address2 = str_replace("/", "", $address);

if (is_dir($address) || is_dir($address2)) {
// open the directory and load all the files into an array
$theDir = @ opendir($address);

if ($theDir) {
// We go through the array one element at a time, putting it into a
new array, minus invisible files
//marked by "." and ".."

while ($theDirFiles = readdir ($theDir)) {
if ($theDirFiles != "." && $theDirFiles != "..") {
$theDirFilesArray[] = $theDirFiles ;
}
}

closedir ($theDir) ;
return $theDirFilesArray;
} else {
$resultsObject->error("In getListOfAnyDirectory(), we tried to open
the directory at the address $address, but for some reason it didn't
open.", "getListOfAnyDirectory");
}
} else {
$resultsObject->error("In getListOfAnyDirectory(), we expected the
function to be handed an address to a directory, but instead we were
given this: $address.", "getListOfAnyDirectory");
}
}
Jul 17 '05 #1
4 3714

"lawrence" <lk******@geocities.com> wrote in message
news:da*************************@posting.google.co m...
In the function below, before I open the directory I first test to
make sure the address I have is, in fact, a directory. This function
was working fine on one web server running FreeBSD and PHP 4.06.
However, today I'm trying to run this software on a new server (RH
Linux 9, PHP 4.2.3) and the directory is failing the is_dir() test.
The error message that I have in my code is printing out this error:

In getListOfAnyDirectory(), we expected the function to be handed an
address to a directory, but instead we were given this:
ppArrangementsPublic/.
Now, ppArrangementsPublic/ looks like a directory to me. So why is it
failing the test?


<snip>

I can only speculate that your "directory" is not only not a directory, but
doesn't actually exist at all. Does file_exists() return 1? Can you find it
using the shell?

Garp
Jul 17 '05 #2
Regarding this well-known quote, often attributed to lawrence's famous "30
Apr 2004 16:20:44 -0700" speech:
In the function below, before I open the directory I first test to
make sure the address I have is, in fact, a directory. This function
was working fine on one web server running FreeBSD and PHP 4.06.
However, today I'm trying to run this software on a new server (RH
Linux 9, PHP 4.2.3) and the directory is failing the is_dir() test.
The error message that I have in my code is printing out this error:

In getListOfAnyDirectory(), we expected the function to be handed an
address to a directory, but instead we were given this:
ppArrangementsPublic/.
Now, ppArrangementsPublic/ looks like a directory to me. So why is it
failing the test? (snip code)

Just some shots in the dark here... try sending it
"./ppArrangementsPublic/", "./ppArrangementsPublic", or just
"ppArrangementsPublic" (no trailing slash). That might be confusing it.
Also, make sure your script is running in the current directory you think
it is.

--
-- Rudy Fleminger
-- sp@mmers.and.evil.ones.will.bow-down-to.us
(put "Hey!" in the Subject line for priority processing!)
-- http://www.pixelsaredead.com
Jul 17 '05 #3
FLEB <so*********@mmers.and.evil.ones.will.bow-down-to.us> wrote in message news:<1f****************************@40tude.net>.. .
Regarding this well-known quote, often attributed to lawrence's famous "30
Apr 2004 16:20:44 -0700" speech:
In the function below, before I open the directory I first test to
make sure the address I have is, in fact, a directory. This function
was working fine on one web server running FreeBSD and PHP 4.06.
However, today I'm trying to run this software on a new server (RH
Linux 9, PHP 4.2.3) and the directory is failing the is_dir() test.
The error message that I have in my code is printing out this error:

In getListOfAnyDirectory(), we expected the function to be handed an
address to a directory, but instead we were given this:
ppArrangementsPublic/.
Now, ppArrangementsPublic/ looks like a directory to me. So why is it
failing the test?

(snip code)

Just some shots in the dark here... try sending it
"./ppArrangementsPublic/", "./ppArrangementsPublic", or just
"ppArrangementsPublic" (no trailing slash). That might be confusing it.
Also, make sure your script is running in the current directory you think
it is.

I think the problem was the capitalization, which worked on a Windows
server but not on a Linux server. Is there a way to get PHP to look
for directories in a case insensitive manner when it is on Linux?
Jul 17 '05 #4
Regarding this well-known quote, often attributed to lawrence's famous "3
May 2004 18:58:21 -0700" speech:
FLEB <so*********@mmers.and.evil.ones.will.bow-down-to.us> wrote in message news:<1f****************************@40tude.net>.. .
Regarding this well-known quote, often attributed to lawrence's famous "30
Apr 2004 16:20:44 -0700" speech:
In the function below, before I open the directory I first test to
make sure the address I have is, in fact, a directory. This function
was working fine on one web server running FreeBSD and PHP 4.06.
However, today I'm trying to run this software on a new server (RH
Linux 9, PHP 4.2.3) and the directory is failing the is_dir() test.
The error message that I have in my code is printing out this error:

In getListOfAnyDirectory(), we expected the function to be handed an
address to a directory, but instead we were given this:
ppArrangementsPublic/.
Now, ppArrangementsPublic/ looks like a directory to me. So why is it
failing the test?

(snip code)

Just some shots in the dark here... try sending it
"./ppArrangementsPublic/", "./ppArrangementsPublic", or just
"ppArrangementsPublic" (no trailing slash). That might be confusing it.
Also, make sure your script is running in the current directory you think
it is.

I think the problem was the capitalization, which worked on a Windows
server but not on a Linux server. Is there a way to get PHP to look
for directories in a case insensitive manner when it is on Linux?


Hmm... if there isn't a function for that in PHP already, I imagine you
could iterate through a directory reading and use a case-insensitive string
match.

--
-- Rudy Fleminger
-- sp@mmers.and.evil.ones.will.bow-down-to.us
(put "Hey!" in the Subject line for priority processing!)
-- http://www.pixelsaredead.com
Jul 17 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

8 posts views Thread by Oliver | last post: by
19 posts views Thread by laredotornado | last post: by
11 posts views Thread by comp.lang.php | last post: by
10 posts views Thread by howa | last post: by
5 posts views Thread by roby | last post: by
4 posts views Thread by techusky | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.