Jump to content

Help interpreting is_file() error


skypanther

Recommended Posts

Can anyone tell me what the following warning message is telling me?

[code]Warning: is_file(): Stat failed for
files/./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././.
in /home/username/public_html/scripts/core/Zip.php on line 1216
[/code]

The warning is being generated by a script I have that walks a directory tree and adds files to a tar archive. It's happening at the point where the PEAR Tar library is trying to read the files to add them to the tar/gz file. The script works fine on other hosts, leading me to suspect some permission error. But, there's no Stat error code to help me figure things out.

Thanks,
Tim
Link to comment
Share on other sites

It appears that the directory walking is messing up - it should only be reading the files/directories that are not '.' or '..' (current or previous directory). This one is continously going to the same directory, most likely failing eventually because the path is too long.

You need to add a check to only walk through the directory when the filename/directory name is not equal to '.' or '..'

Monkeymatt
Link to comment
Share on other sites

Here is a directory walking snippet I posted before, it's recursive so will do all subdir's too.
[code]<?php
function directory_walk($path)
{
    $path = realpath($path);
    $ds = DIRECTORY_SEPARATOR;
    $handle = opendir($path);
    $files = array();

    while (($file = readdir($handle)) !== false)
    {
        if (!in_array($file, array('.', '..')))
        {
            if (is_file($newpath = $path . $ds . $file))
            {
                $files[] = $file;
            }
            else
            {
            $files[$path] = directory_walk($newpath);
            }
        }
    }
   
    return $files;
}
?>[/code]
Link to comment
Share on other sites

My script is made up of code I wrote, plus the standard PEAR Tar and Zip classes. My code builds a list of files to be backed up. That part is working fine. It filters out . and .. and really, all it does is pass an array of file names and directory names to the Tar/Zip class's add() method.

The error I'm seeing happens within the call to add(). I'll check, but I have to believe that the folks over at the PEAR project are smart enough to filter out the . and .. entries when reading a directory. Also, this script works just fine everywhere except at this one host.

My guess is that it's a permission problem, probably a file ownership not file attribute thing. All the docs I can find say that stat() will return an error code if it fails--like, there should be an "errno = ##" part of the error message to tell me why it failed. But, I don't get such an errno in my output.

Thanks for all your suggestions so far.
Tim
Link to comment
Share on other sites

no, it's not a file ownership problem - you can see the script is trying to access the directory:
[code]file/./././././././././././././././././././././././././././././././././././././././././././././././././.[/code]

that means it is opening the subdir '.' and then opening the subdir '.' etc. etc..

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.