filesize(): stat failed for specific path - php
Asked Answered
M

2

20

i am coding a simple doc managing script and need to get the file size and file type /file or folder/ in a table. somehow it doesn't work into the mention directory. please help if possible:

    <?php
$path = "./documents";
$dh = dir($path);
while( ($file=$dh->read()) ) 
{
    if( $file=="." || $file=="..")continue;
    echo "<tr><td><a href='download.php?f=$file' title='Click to Open/Download'>$file</a></td>";
    echo "<td>";
    echo (is_file($file))? "<img src='file.jpg'/> FILE" : "<img src='folder.jpg'/> FOLDER ";
    echo "</td><td>" .filesize($file)."</td>";
    echo "<td><input type='checkbox' name='delete[]'/></td></tr>";
}
?>

it does actually has 2 errors - one the file size doesn't work for the location, if i change it to path to "." - everything is ok, but if i try to change to the folder where i need it /documents ...all goes bad, and secondly - it doesn't take the right icon file as well, same type of problem. thank you

Morelos answered 27/12, 2015 at 15:6 Comment(2)
$path = "../documents";Aube
tried, but it lost it completely ../doc doesnt workMorelos
K
21

Problem is, $file is only the filename without the directory prefix, so checking on it won't work. One way would be to have a variable with the absolute filename (say $realfile). You'd then have to alter your code and use this variable for the file checks:

<?php
$path = "./documents";
$dh = dir($path);
while(($file=$dh->read()) !== false) {
    if( $file=="." || $file=="..") continue;
    // have a new variable for the real filepath
    $realfile = $path . "/" . $file;
    echo "<tr><td><a href='download.php?f=$file' title='Click to Open/Download'>$file</a></td>";
    echo "<td>";
    echo (is_file($realfile))? "<img src='file.jpg'/> FILE" : "<img src='folder.jpg'/> FOLDER ";
    echo "</td><td>" .filesize($realfile)."</td>";
    echo "<td><input type='checkbox' name='delete[]'/></td></tr>";
}
?>
Kennakennan answered 27/12, 2015 at 15:35 Comment(3)
WOW! Thank you Jan - that's did it - great! have a great holiday time bro!Morelos
this is the green check sign on the left? right? i think it is now checked. thx. i am fighting with another 'small' prbm with the same code - trying to give the option to either DOWNLOAD the file (an href url ) or OPEN in case it is a DIRECTORY (folder) with php opendir() or similar. could you give me some ideas.Morelos
Yes, indeed, it is the green check on the left. Check for a directory with is_dir()Kennakennan
A
1

If anyone still encounters this error and the top answer didn't work for you. Then it must be because there is a special character in your filepath i.e. \r or \n

Try:

$f = str_replace(Array("\n", "\r", "\n\r"), '', $f);

This is a common problem for reading content on a file.

Antoninaantonino answered 10/10, 2021 at 15:24 Comment(1)
If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From ReviewWendel

© 2022 - 2024 — McMap. All rights reserved.