This is a discussion on why would a directory fail the is_dir() test? within the PHP Language forums, part of the PHP Programming Forums category; In the function below, before I open the directory I first test to make sure the address I have is, ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
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"); } } |
|
|||
|
"lawrence" <lkrubner@geocities.com> wrote in message news:da7e68e8.0404301520.1d60f4c@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 |
|
|||
|
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 |
|
|||
|
FLEB <soon.the.sp@mmers.and.evil.ones.will.bow-down-to.us> wrote in message news:<1fxhwrw9ndoqd.4rnznd6llyhl.dlg@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? |
|
|||
|
Regarding this well-known quote, often attributed to lawrence's famous "3
May 2004 18:58:21 -0700" speech: > FLEB <soon.the.sp@mmers.and.evil.ones.will.bow-down-to.us> wrote in message news:<1fxhwrw9ndoqd.4rnznd6llyhl.dlg@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 |